NETDEVICE 7

中文man手册

NETDEVICE

NAME
æ»è§ (SYNOPSIS)
æè¿° (DESCRIPTION)
IOCTLS
注æ (NOTE)
注æ (NOTE)
å¦è§ (SEE ALSO)
[䏿çç»´æ¤äºº]
[ä¸æçææ°æ´æ°]
ãä¸å½linux论åmanæå页翻è¯è®¡åã:
è·

NAME

netdevice - åºå±è®¿é® Linux ç½ç»è®¾å¤.

æ»è§ (SYNOPSIS)

#include <sys/ioctl.h>
#include <net/if.h>

æè¿° (DESCRIPTION)

æ¬æå æè¿° ç¨äº éç½® ç½ç»è®¾å¤ ç 奿¥å(socket) æ¥å£.

Linux æ¯æ ä¸äº éç½® ç½ç»è®¾å¤ ç æ å ioctl. ä»ä»¬ ç¨äº ä»»æç 奿¥å æè¿°ç¬¦, è æ é¡» äºè§£ å¶ ç±»å æ ç³»å. ä»ä»¬ ä¼ é ä¸ä¸ª ifreq ç»æ:

struct ifreq
{

char

ifr_name[IFNAMSIZ];

/* Interface name */

union {

struct sockaddr

ifr_addr;

struct sockaddr

ifr_dstaddr;

struct sockaddr

ifr_broadaddr;

struct sockaddr

ifr_netmask;

struct sockaddr

ifr_hwaddr;

short

ifr_flags;

int

ifr_ifindex;

int

ifr_metric;

int

ifr_mtu;

struct ifmap

ifr_map;

char

ifr_slave[IFNAMSIZ];

char

ifr_newname[IFNAMSIZ];

char *

ifr_data;

};

}

struct ifconf
{

int ifc_len;

/* size of buffer */

union {

char *

ifc_buf; /* buffer address */

struct ifreq *ifc_req; /* array of structures */

};

};

ä¸è¬è¯´æ¥, ioctl éè¿ æ ifr_name 设置为 æ¥å£ ç åå æ¥ æå® å°è¦ æä½ ç 设å¤. ç»æç å¶ä»æå å¯ä»¥ å享 åå.

IOCTLS

妿 æä¸ª ioctl æ è®°ä¸º ç¹ææä½, é£ä¹ æä½æ¶ éè¦ ææuid 为 0, æè æ¥æ CAP_NET_ADMIN è½å. å¦å å° è¿å EPERM .
SIOCGIFNAME

ç»å® ifr_ifindex, è¿å ifr_name ä¸ ç æ¥å£åå. è¿æ¯ å¯ä¸ è¿å ifr_name å容 ç ioctl.

SIOCGIFINDEX

æ æ¥å£ ç ç´¢å¼ åå¥ ifr_ifindex.

SIOCGIFFLAGS, SIOCSIFFLAGS

è¯»å æ 设置 设å¤ç æ´»å¨æ å¿å. ifr_flags åå« ä¸åå¼ ç å±è½ä½:

     

Image grohtml-3014925-1.png

设置 æ´»å¨æ å¿å æ¯ ç¹ææä½, 使¯ ä»»ä½è¿ç¨ é½å¯ä»¥ è¯»å æ å¿å.

SIOCGIFMETRIC, SIOCSIFMETRIC

ä½¿ç¨ ifr_metric è¯»å æ 设置 设å¤ç metric å¼. 该åè½ ç®å è¿æ²¡æ å®ç°. 读åæä½ 使 ifr_metric ç½® 0, è 设置æä½ å è¿å EOPNOTSUPP.

SIOCGIFMTU, SIOCSIFMTU

ä½¿ç¨ ifr_mtu è¯»å æ 设置 设å¤ç MTU(æå¤§ä¼ è¾åå). 设置 MTU æ¯ ç¹ææä½. è¿å°ç MTU å¯è½ å¯¼è´ åæ ¸ å´©æº.

SIOCGIFHWADDR, SIOCSIFHWADDR

ä½¿ç¨ ifr_hwaddr è¯»å æ 设置 设å¤ç 硬件å°å. 设置 硬件å°å æ¯ ç¹ææä½.

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 å¨ è®¾å¤ç é¾è·¯å± ç»æè¿æ»¤å¨ (multicase filter) ä¸ æ·»å  æ å é¤ å°å. è¿äºæ¯ ç¹ææä½. åç packet(7).

SIOCGIFTXQLEN, SIOCSIFTXQLEN

ä½¿ç¨ ifr_qlen è¯»å æ 设置 设å¤ç ä¼ è¾éåé¿åº¦. 设置 ä¼ è¾éåé¿åº¦ æ¯ ç¹ææä½.

SIOCSIFNAME

æ ifr_ifindex ä¸ æå®ç æ¥å£åå æ¹æ ifr_newname. è¿æ¯ä¸ª ç¹ææä½.

SIOCGIFCONF

è¿å æ¥å£å°å(ä¼ è¾å±) å表. åºäº å¼å®¹æ§, ç®å åªä»£è¡¨ AF_INET å°å. ç¨æ· ä¼ é ä¸ä¸ª ifconf ç»æ ä½ä¸º ioctl ç åæ°. å¶ä¸ ifc_req åå« ä¸ä¸ª æé æå ifreq ç»ææ°ç», ä»ç é¿åº¦ 以åè 为åä½ åæ¾å¨ ifc_len ä¸. åæ ¸ ç¨ ææ å½åç L3(第ä¸å±?) æ¥å£å°å å¡«å ifreqs, è¿äº æ¥å£ æ£å¨ è¿è¡: ifr_name åæ¾ æ¥å£åå (eth0:1ç), ifr_addr åæ¾ å°å. åæ ¸ å¨ ifc_len ä¸ è¿å å®éé¿åº¦; 妿 ä» çäº åå§é¿åº¦, 表示 溢åºäº, ç¨æ· åºè¯¥ æ¢ä¸ä¸ª 大äºç ç¼å²åº éè¯ ä¸ä¸. 没æ åç éè¯¯æ¶ ioctl è¿å 0, å¦å è¿å -1, æº¢åº ä¸ç® é误.

大夿° åè®® ä½¿ç¨ èªå·±ç ioctl éç½® åè®® ç¹å®ç æ¥å£ æä½. å·ä½ æåµ åç åè®®ç 叮婿å. è¦éç½® IP å°å å¯ä»¥ åç ip(7).

å¦å¤, æäº è®¾å¤ æ ä¸ç¨ç ioctl, è¿é ä¸å åè¿°.

注æ (NOTE)

ä¸¥æ ¼è¯´æ¥ SIOCGIFCONF æ¯ ä¸é¨ é对 IP ç, å® å±äº ip(7).

注æ (NOTE)

å¯ä»¥ éè¿ /proc/net/dev çå° æ²¡æ å°å æ æ²¡æ IFF_RUNNING æ å¿ ç æ¥å£åå.

å¦è§ (SEE ALSO)

ip(7), proc(7)

[䏿çç»´æ¤äºº]

徿 <xuming@iname.com>

[ä¸æçææ°æ´æ°]

2000/10/15 第ä¸ç
2001/11/24
ç¬¬ä¸æ¬¡ä¿®è®¢

ãä¸å½linux论åmanæå页翻è¯è®¡åã:

http://cmpp.linuxforum.net

è·

æ¬é¡µé¢ä¸æçç±ä¸æ man æå页计åæä¾ã
䏿 man æå页计åï¼https://github.com/man-pages-zh/manpages-zh