Provided by: manpages-ja_0.5.0.0.20060115-1_all bug

IOCTL

       「特権が必要」と欺劼気譴討い ioctl を実行するには、 実効ユーザー ID が
       0  か、  CAP_NET_ADMIN   権限が必要である。これが満たされていない場合は
       EPERM が返される。

       SIOCGIFNAME
              ifr_ifindex     を受け取り、インターフェースの名前を    ifr_name
              に入れて返す。これは結果を   ifr_name   として返す唯一の   ioctl
              である。

       SIOCGIFINDEX
              インターフェースの   interface   index   を取得し、  ifr_ifindex
              に入れて返す。

       SIOCGIFFLAGS, SIOCSIFFLAGS
              デバイスの active  フラグワードを取得または設定する。  ifr_flags
              には以下の値のビットマスクが入る。

                                          デバイスフラグ
              IFF_UP            インターフェースは動作中。
              IFF_BROADCAST     邑なブロード-
                                ャストアドレスがセットされている。
              IFF_DEBUG         内部のデバッグフラグ。
              IFF_LOOPBACK      インターフェースはループバックである。
              IFF_POINTOPOINT   インターフェースは             point-to-point
                                リンクである。
              IFF_RUNNING       リソースが割り当て済み。
              IFF_NOARP         arp プロトコルがない。
              IFF_PROMISC       インターフェースは promiscuous モードである。
              IFF_NOTRAILERS    trailer の利用を避ける。
              IFF_ALLMULTI      全てのマルチゥ礇好肇僖吋奪箸鮗信する。
              IFF_MASTER        負荷分散グループのマスターである。
              IFF_SLAVE         負荷分散グループのスレーブである。
              IFF_MULTICAST     マルチゥ礇好箸鬟汽檗璽箸靴討い襦
              IFF_PORTSEL       ifmap によってメディアタイプを選択でい襦
              IFF_AUTOMEDIA     自動メディア選択が邑になっている。
              IFF_DYNAMIC       このインターフェースが閉じると、アドレスは失われる。

              acitive             フラグワードの設定は特権が必要な操作である。
              しかし読み出しはどんなプロセスからも可能である。

       SIOCGIFMETRIC, SIOCSIFMETRIC
              デバイスのメトリックを    ifr_metric    を用いて取得・設定する。
              これはまだ実装されていない。読み出そうとすると ifr_metric  に  0
              をセットして返り、設定しようとすると EOPNOTSUPP が返る。

       SIOCGIFMTU, SIOCSIFMTU
              デバイスの    MTU    (Maximum    Transfer   Unit)   を   ifr_mtu
              を用いて取得・設定する。  MTU   の設定は特権が必要な操作である。
              MTU の値を小さくしすぎるとカーネルがクラッシュするかもしれない。

       SIOCGIFHWADDR, SIOCSIFHWADDR
              デバイスのハードウェアアドレスを                      ifr_hwaddr
              を用いて取得・設定する。     ハードウェアアドレスは     sockaddr
              構造体に設定される。       sa_family        には        ARPHRD_*
              デバイスタイプが入り、   sa_data   はバイト   0   から始まる  L2
              ハードウェアアドレスが入る。
              ハードウェアアドレスの設定は特権が必要な操作である。

       SIOCSIFHWBROADCAST
              デバイスのハードウェアブロードゥ礇好肇▲疋譽垢       ifr_hwaddr
              の値に設定する。この操作には特権が必要である。

       SIOCGIFMAP, SIOCSIFMAP
              インターフェースのハードウェアのパラメータを             ifr_map
              を用いて取得・設定する。
              パラメータの設定は特権が必要な操作である。

              struct ifmap {
                  unsigned long   mem_start;
                  unsigned long   mem_end;
                  unsigned short  base_addr;
                  unsigned char   irq;
                  unsigned char   dma;
                  unsigned char   port;
              };

              ifmap 構造体の解釈はデバイスドライバとアーゥ謄チャに依存する。

       SIOCADDMULTI, SIOCDELMULTI
              デバイスのリンク層のマルチゥ礇好肇侫ルターから、     ifr_hwaddr
              のアドレスを追加・削除する。これらの操作には特権が必要である。
              別法が packet(7) で解説されている。

       SIOCGIFTXQLEN, SIOCSIFTXQLEN
              デバイスの送信ゥ紂爾猟垢気  ifr_qlen   に取得・設定する。送信-
              ューの長さの設定には特権が必要である。

       SIOCSIFNAME

              ifr_name      で指定したインターフェースの名前を     ifr_newname
              に変更する。この操作には特権が必要である。インターフェースが  up
              していない 時にのみ使用でい襦

       SIOCGIFCONF
              インターフェース(トランスポート層)アドレスのリストを返す。
              現在のところ、互換世里燭瓩            AF_INET            (IPv4)
              ファミリーのアドレスのみである。   ユーザーは   ifconf  構造体を
              ioctl         の引数として渡す。         これには          ifreq
              構造体の配列へのポインタである                           ifc_req
              と、その長さをバイト単位で指定する ifc_len  を含む。  カーネルは
              ifreqs                を現在動作している全ての                L3
              インターフェースアドレスで埋める。                      ifr_name
              にはインターフェース名    (eth0:1    など)   が入り、   ifr_addr
              にはアドレスが入る。  カーネルは実際の長さを  ifc_len   に返す。
              ifc_len                   _
              オーバーフローを起こしている可能世あるので、
              全てのアドレスを所得するためにより大い淵丱奪侫,悩道邱圓垢襪戮-
              である。   エラーがなかった場合は   ioctl    は    0    を返す。
              エラーがあった場合は                 -1                 を返す。
              オーバーフローはエラーとは見なされない。

       ほとんどのプロトコルには、専用のインターフェースオプションを
       設定するための独自の   ioctl   が存在する。   説明は各プロトコルの  man
       ページを見よ。

       さらに、デバイスによってはプライベートな         ioctl         がある。
       これらはここでは説明しない。

意
       厳密にいうと、 SIOCGIFCONF は IP 固佑任△蝓 ip(7) に属する。

       アドレスがなかったり、                                      IFF_RUNNING
       フラグがセットされていないインターフェースの名前は        /proc/net/dev
       で見つけることが出来る。

       ローカル    IPV6    IP    アドレスは    /proc/netrtnetlink(7)
       で見つけることが出来る。

グ
       glibc    2.1    では    net/if.h    に    ifr_newname    マクロがない。
       とりあえずの対応策として、以下のコードを追加しておくこと。

              #ifndef ifr_newname
              #define ifr_newname     ifr_ifru.ifru_slave
              #endif

目
       capabilities(7), ip(7), proc(7), rtnetlink(7)