rtnetlink

Autres langues

Langue: ja

Version: 1999-04-30 (openSuse - 09/10/07)

Autres sections - même nom

Section: 7 (Divers)

̾Á°

rtnetlink, NETLINK_ROUTE - Linux IPv4 ¥ë¡¼¥Æ¥£¥ó¥°¥½¥±¥Ã¥È

½ñ¼°

#include <asm/types.h>
#include <linux/netlink.h>
#include <linux/rtnetlink.h>
#include <sys/socket.h>

rtnetlink_socket = socket(PF_NETLINK, int socket_type, NETLINK_ROUTE);

ÀâÌÀ

rtnetlink ¤Ï¥«¡¼¥Í¥ë¤Î¥ë¡¼¥Æ¥£¥ó¥°¥Æ¡¼¥Ö¥ë¤òÆɤó¤À¤êÊѹ¹¤·¤¿¤ê ¤¹¤ë¤¿¤á¤Î¤â¤Î¤Ç¤¢¤ë¡£¤³¤ì¤Ï¥«¡¼¥Í¥ë¤¬ÆâÉô¤Î¥µ¥Ö¥·¥¹¥Æ¥à¤È ÄÌ¿®¤¹¤ë¤¿¤á¤Ë¤âÍѤ¤¤é¤ì¤Æ¤¤¤ë¤¬¡¢¤½¤ì¤Ï¤³¤³¤Ç¤Ïµ­½Ò¤·¤Ê¤¤¡£ ¤³¤Î man ¥Ú¡¼¥¸¤Ç¤Ï¥æ¡¼¥¶¡¼¶õ´Ö¤Î¥×¥í¥°¥é¥à¤È¤ÎÄÌ¿®¤Ë´Ø¤·¤Æ¤Î¤ß½Ò¤Ù¤ë¡£ ¥Í¥Ã¥È¥ï¡¼¥¯·ÐÏ©¡¦IP ¥¢¥É¥ì¥¹¡¦¥ê¥ó¥¯¥Ñ¥é¥á¡¼¥¿¡¦ ¶á˵ÀßÄê (neighbour setup)¡¦¥­¥å¡¼¥¤¥ó¥°¥ë¡¼¥ë (queueing dicipline)¡¦ ¥È¥é¥Õ¥£¥Ã¥¯¥¯¥é¥¹¡¦¥Ñ¥±¥Ã¥È¤Î¥¯¥é¥¹Ê¬Îà¤Ê¤É¤¬¡¢¤¹¤Ù¤Æ NETLINK_ROUTE ¥½¥±¥Ã¥È¤òÄ̤·¤ÆÀ©¸æ¤Ç¤­¤ë¡£ rtnetlink ¤Ï netlink ¥á¥Ã¥»¡¼¥¸¤ò¥Ù¡¼¥¹¤Ë¤·¤Æ¤¤¤ë¡£¾ÜºÙ¤Ï netlink(7) ¤ò¸«¤ë¤³¤È¡£

¥ë¡¼¥Æ¥£¥ó¥°Â°À­

rtnetlink ¥á¥Ã¥»¡¼¥¸¤Ë¤Ï¡¢½é´ü¥Ø¥Ã¥À¤Î¸å¤ËÉÕ²ÃŪ¤Ê°À­¤ò »ý¤Ä¤â¤Î¤¬¤¢¤ë¡£

struct rtattr {

    unsigned short rta_len;    /* Length of option */

    unsigned short rta_type;   /* Type of option */

    /* Data follows */

};

¤³¤ì¤é¤Î°À­¤ÎÁàºî¤Ï¡¢ RTA_* ¥Þ¥¯¥í¤« libnetlink ¤òÄ̤·¤Æ¤Î¤ß ¹Ô¤¦¤Ù¤­¤Ç¤¢¤ë¡£ rtnetlink(3) ¤ò¸«¤è¡£

¥á¥Ã¥»¡¼¥¸

rtnetlink ¤Ï (ɸ½àŪ¤Ê netlink ¥á¥Ã¥»¡¼¥¸¤Ë²Ã¤¨¤Æ) °Ê²¼¤Î¥á¥Ã¥»¡¼¥¸¥¿¥¤¥×¤«¤é¹½À®¤µ¤ì¤ë¡£
RTM_NEWLINK, RTM_DELLINK, RTM_GETLINK
»ØÄꤷ¤¿¥Í¥Ã¥È¥ï¡¼¥¯¥¤¥ó¥¿¡¼¥Õ¥§¡¼¥¹¤Î¾ðÊó¤ò¡¢À¸À®¡¦ºï½ü¡¦¼èÆÀ¤¹¤ë¡£ ¤³¤ì¤é¤Î¥á¥Ã¥»¡¼¥¸¤Ï ifinfomsg ¹½Â¤ÂΤȡ¢¤½¤ì¤Ë³¤¤¤Æ¤¤¤¯¤Ä¤«¤Î rtattr ¹½Â¤ÂΤòȼ¤¦¡£

struct ifinfomsg {

    unsigned char  ifi_family; /* AF_UNSPEC */

    unsigned short ifi_type;   /* Device type */

    int            ifi_index;  /* Interface index */

    unsigned int   ifi_flags;  /* Device flags  */

    unsigned int   ifi_change; /* change mask */

};

ifi_flags ¤Ï¥Ç¥Ð¥¤¥¹¤Î¥Õ¥é¥°¤Ç¤¢¤ë¡£ netdevice(7) ¤ò¸«¤è¡£ ifi_index ¤Ï¾¤È½Å¤Ê¤é¤Ê¤¤¥¤¥ó¥¿¡¼¥Õ¥§¡¼¥¹¤Î index ¤Ç¤¢¤ë¡£ ifi_change ¤Ï¾­Íè¤ÎÍøÍѤΤ¿¤á¤ËͽÌ󤵤ì¤Æ¤ª¤ê¡¢¾ï¤Ë 0xFFFFFFFF ¤Ë¥»¥Ã¥È¤¹¤Ù¤­¤Ç¤¢¤ë¡£

¥ë¡¼¥Æ¥£¥ó¥°Â°À­
rta_type
Ãͤη¿
ÀâÌÀ

IFLA_UNSPEC
-
»ØÄꤵ¤ì¤Æ¤¤¤Ê¤¤¡£
IFLA_ADDRESS
hardware address
¥¤¥ó¥¿¡¼¥Õ¥§¡¼¥¹ L2 ¥¢¥É¥ì¥¹
IFLA_BROADCAST
hardware address
L2 ¥Ö¥í¡¼¥É¥­¥ã¥¹¥È¥¢¥É¥ì¥¹
IFLA_IFNAME
asciiz string
¥Ç¥Ð¥¤¥¹Ì¾
IFLA_MTU
unsigned int
¥Ç¥Ð¥¤¥¹¤Î MTU
IFLA_LINK
int
¥ê¥ó¥¯¥¿¥¤¥×
IFLA_QDISC
asciiz string
¥­¥å¡¼¥¤¥ó¥°¤Î¥ë¡¼¥ë
IFLA_STATS
²¼µ­»²¾È
¥¤¥ó¥¿¡¼¥Õ¥§¡¼¥¹¤ÎÅý·×

IFLA_STATS ¤ÎÃͤη¿¤Ï struct net_device_stats ¤Ç¤¢¤ë¡£

RTM_NEWADDR, RTM_DELADDR, RTM_GETADDR
¥¤¥ó¥¿¡¼¥Õ¥§¡¼¥¹¤Î IP ¥¢¥É¥ì¥¹¤Î¾ðÊó¤òÄɲᦺï½ü¡¦¼èÆÀ¤¹¤ë¡£ Linux 2.2 ¤Ç¤Ï¡¢°ì¤Ä¤Î¥¤¥ó¥¿¡¼¥Õ¥§¡¼¥¹¤ËÊ£¿ô¤Î IP ¥¢¥É¥ì¥¹¤ò ÊÝ»ý¤µ¤»¤ë¤³¤È¤¬¤Ç¤­¡¢¤³¤ì¤Ï 2.0 ¤ÎÊÌ̾¥Ç¥Ð¥¤¥¹¤Î³µÇ°¤òÃÖ¤­´¹¤¨¤ë¡£ Linux 2.2 ¤Ç¤Ï¡¢¤³¤ì¤é¤Î¥á¥Ã¥»¡¼¥¸¤Ï IPv4 ¤È IPv6 ¤ÎξÊý¤Î¥¢¥É¥ì¥¹¤ò¥µ¥Ý¡¼¥È¤·¤Æ¤¤¤ë¡£ ¤³¤ì¤é¤Ï ifaddrmsg ¹½Â¤ÂΤòȼ¤¦¡£¤½¤Î¤¢¤È¤Ë rtaddr ¥ë¡¼¥Æ¥£¥ó¥°Â°À­¤¬Â³¤¯¤³¤È¤â¤¢¤ë¡£

struct ifaddrmsg {

    unsigned char ifa_family;    /* Address type */

    unsigned char ifa_prefixlen; /* Prefixlength of address */

    unsigned char ifa_flags;     /* Address flags */

    unsigned char ifa_scope;     /* Address scope */

    int           ifa_index;     /* Interface index */

};

ifa_family ¤Ï¥¢¥É¥ì¥¹¥Õ¥¡¥ß¥ê¡¼¤Î¥¿¥¤¥×¤Ç¤¢¤ë (¸½ºß¤Ï AF_INET ¤Þ¤¿¤Ï AF_INET6)¡£ ifa_prefixlen ¤Ï¥¢¥É¥ì¥¹¤Î¥¢¥É¥ì¥¹¥Þ¥¹¥¯¤ÎŤµ¤Ç¤¢¤ë (IPv4 ¤Î¤è¤¦¤Ë¡¢ ¤½¤Î¥Õ¥¡¥ß¥ê¡¼¤ÇÄêµÁ¤µ¤ì¤Æ¤¤¤ë¾ì¹ç)¡£ ifa_scope ¤Ï¥¢¥É¥ì¥¹¤Î¥¹¥³¡¼¥×¤Ç¤¢¤ë¡£ ifa_index ¤Ï¥¢¥É¥ì¥¹¤¬´ØÏ¢¤Å¤±¤é¤ì¤Æ¤¤¤ë¥¤¥ó¥¿¡¼¥Õ¥§¡¼¥¹¤Î index ¤Ç¤¢¤ë¡£ ifa_flags ¤Ï¥Õ¥é¥°¥ï¡¼¥É¤Ç¡¢ Æó¤Ä¤á¤Î¥¢¥É¥ì¥¹ (¸Å¤¤ÊÌ̾¥¤¥ó¥¿¡¼¥Õ¥§¡¼¥¹) ¤Î¾ì¹ç¤Ï IFA_F_SECONDARY ¤Ë¡¢±Ê³Ū¤Ê¥¢¥É¥ì¥¹¤Î¾ì¹ç¤Ï IFA_F_PERMANENT ¤ËŬÍѤµ¤ì¤ë¡£¥æ¡¼¥¶¡¼¤Ë¤è¤Ã¤Æ¥»¥Ã¥È¤µ¤ì¤ë¥Õ¥é¥°¤È¡¢ undocumented ¤Ê¥Õ¥é¥°¤¬¤¢¤ë¡£

°À­
rta_type
Ãͤη¿
ÀâÌÀ

IFA_UNSPEC
-
»ØÄꤵ¤ì¤Æ¤¤¤Ê¤¤
IFA_ADDRESS
raw protocol address
¥¤¥ó¥¿¡¼¥Õ¥§¡¼¥¹¥¢¥É¥ì¥¹
IFA_LOCAL
raw protocol address
¥í¡¼¥«¥ë¥¢¥É¥ì¥¹
IFA_LABEL
asciiz string
¥¤¥ó¥¿¡¼¥Õ¥§¡¼¥¹¤Î̾Á°
IFA_BROADCAST
raw protocol address
¥Ö¥í¡¼¥É¥­¥ã¥¹¥È¥¢¥É¥ì¥¹
IFA_ANYCAST
raw protocol address
anycast ¥¢¥É¥ì¥¹
IFA_CACHEINFO
struct ifa_cacheinfo
¥¢¥É¥ì¥¹¾ðÊó
RTM_NEWROUTE, RTM_DELROUTE, RTM_GETROUTE
¥Í¥Ã¥È¥ï¡¼¥¯·ÐÏ©¤Î¾ðÊó¤òÀ¸À®¡¦ºï½ü¡¦¼èÆÀ¤¹¤ë¡£ ¤³¤ì¤é¤Î¥á¥Ã¥»¡¼¥¸¤Ï rtmsg ¹½Â¤ÂΤòȼ¤¦¡£¤½¤Î¤¢¤È¤Ë¤¤¤¯¤Ä¤«¤Î rtattr ¹½Â¤ÂΤò³¤±¤ë¤³¤È¤â¤Ç¤­¤ë¡£ RTM_GETROUTE ¤Ç rtm_dst_len ¤È rtm_src_len ¤Ë 0 ¤ò¥»¥Ã¥È¤¹¤ë¤È¡¢ »ØÄꤵ¤ì¤¿¥ë¡¼¥Æ¥£¥ó¥°¥Æ¡¼¥Ö¥ë¤ÎÁ´¤Æ¤Î¥¨¥ó¥È¥ê¤ò½êÆÀ¤¹¤ë¡£ rtm_table ¤È rtm_protocol °Ê³°¤Î¾¤Î¥Õ¥£¡¼¥ë¥É¤Ë 0 ¤òÆþ¤ì¤ë¤È¡¢¥ï¥¤¥ë¥É¥«¡¼¥É¤ò°ÕÌ£¤¹¤ë¡£

struct rtmsg {

    unsigned char rtm_family;   /* Address family of route */

    unsigned char rtm_dst_len;  /* Length of source */

    unsigned char rtm_src_len;  /* Length of destination */

    unsigned char rtm_tos;      /* TOS filter */



    unsigned char rtm_table;    /* Routing table ID */

    unsigned char rtm_protocol; /* Routing protocol; see below */

    unsigned char rtm_scope;    /* See below */

    unsigned char rtm_type;     /* See below */



    unsigned int  rtm_flags;

};

rtm_type ·ÐÏ©¤Î¥¿¥¤¥×

RTN_UNSPEC ̤ÃΤηÐÏ©
RTN_UNICAST ¥²¡¼¥È¥¦¥§¥¤¤Þ¤¿¤Ï¥À¥¤¥ì¥¯¥È¤Ê·ÐÏ©
RTN_LOCAL ¥í¡¼¥«¥ë¥¤¥ó¥¿¡¼¥Õ¥§¡¼¥¹¤Î·ÐÏ©
RTN_BROADCAST ¥í¡¼¥«¥ë¤Ê¥Ö¥í¡¼¥É¥­¥ã¥¹¥È·ÐÏ© (¥Ö¥í¡¼¥É¥­¥ã¥¹¥È¤È¤·¤ÆÁ÷¿®¤µ¤ì¤ë)
RTN_ANYCAST ¥í¡¼¥«¥ë¤Ê¥Ö¥í¡¼¥É¥­¥ã¥¹¥È·ÐÏ© (¥æ¥Ë¥­¥ã¥¹¥È¤È¤·¤ÆÁ÷¿®¤µ¤ì¤ë)
RTN_MULTICAST ¥Þ¥ë¥Á¥­¥ã¥¹¥È·ÐÏ©
RTN_BLACKHOLE ¥Ñ¥±¥Ã¥È¤ò¼Î¤Æ¤ë·ÐÏ©
RTN_UNREACHABLE Åþã¤Ç¤­¤Ê¤¤¹Ô¤­Àè
RTN_PROHIBIT ¥Ñ¥±¥Ã¥È¤òµñÈݤ¹¤ë·ÐÏ©
RTN_THROW ·Ðϩõº÷¤òÊ̤Υơ¼¥Ö¥ë¤Ç·Ñ³
RTN_NAT ¥Í¥Ã¥È¥ï¡¼¥¯¥¢¥É¥ì¥¹¤ÎÊÑ´¹¥ë¡¼¥ë
RTN_XRESOLVE ³°Éô¥ì¥¾¥ë¥Ð¤ò»²¾È (¼ÂÁõ¤µ¤ì¤Æ¤¤¤Ê¤¤)
rtm_protocol ·ÐÏ©¤Î¾ðÊó¸»

RTPROT_UNSPEC ÉÔÌÀ
RTPROT_REDIRECT ICMP ¥ê¥À¥¤¥ì¥¯¥È¤Ë¤è¤ë (¸½ºß¤ÏÍѤ¤¤é¤ì¤Ê¤¤)
RTPROT_KERNEL ¥«¡¼¥Í¥ë¤Ë¤è¤ë
RTPROT_BOOT ¥Ö¡¼¥È»þ
RTPROT_STATIC ´ÉÍý¼Ô¤Ë¤è¤ë

RTPROT_STATIC ¤è¤ê¤âÂ礭¤ÊÃͤϥ«¡¼¥Í¥ë¤Ë¤è¤Ã¤Æ²ò¼á¤µ¤ì¤Ê¤¤¡£¤³¤ì¤Ï ñ¤Ê¤ë¥æ¡¼¥¶¡¼¤Ø¤Î¾ðÊó¤Ç¤¢¤ë¡£¤³¤ì¤é¤Ï·ÐÏ©¾ðÊó¤Î¾ðÊ󸻤ò ¥¿¥°ÉÕ¤±¤·¤¿¤ê¡¢Ê£¿ô¤Î¥ë¡¼¥Æ¥£¥ó¥°¥Ç¡¼¥â¥ó¤«¤é¤Î¾ðÊó¤ò ¶èÊ̤¹¤ë¤¿¤á¤ËÍѤ¤¤ë¤³¤È¤¬¤Ç¤­¤ë¡£ ´û¤Ë³ä¤êÅö¤Æ¤é¤ì¤Æ¤¤¤ë¥ë¡¼¥Æ¥£¥ó¥°¥Ç¡¼¥â¥ó¤Î¼±Ê̻ҤˤĤ¤¤Æ¤Ï <linux/rtnetlink.h> ¤ò¸«¤è¡£

rtm_scope ¤Ï¹Ô¤­Àè¤Ø¤Îµ÷Î¥¤Ç¤¢¤ë¡£

RT_SCOPE_UNIVERSE ¥°¥í¡¼¥Ð¥ë¤Ê·ÐÏ©
RT_SCOPE_SITE ¥í¡¼¥«¥ë¤Ê¼«Î§¥·¥¹¥Æ¥à¤Ë¤ª¤±¤ëÆâÉô·ÐÏ©
RT_SCOPE_LINK ¤³¤Î¥ê¥ó¥¯¾å¤Î·ÐÏ©
RT_SCOPE_HOST ¥í¡¼¥«¥ë¥Û¥¹¥È¾å¤Î·ÐÏ©
RT_SCOPE_NOWHERE ¹Ô¤­À褬¸ºß¤·¤Ê¤¤

¥æ¡¼¥¶¡¼¤Ï RT_SCOPE_UNIVERSE ¤È RT_SCOPE_SITE ¤Î´Ö¤ÎÃͤòÍѤ¤¤ë¤³¤È¤¬¤Ç¤­¤ë¡£

rtm_flags ¤Ï°Ê²¼¤Î°ÕÌ£¤ò»ý¤Ä:

RTM_F_NOTIFY ·ÐÏ©¤¬Êѹ¹¤µ¤ì¤ë¤È¡¢ rtnetlink ¤òÄ̤·¤Æ¥æ¡¼¥¶¡¼¤ËÄÌÃΤ¬¹Ô¤¯¡£
RTM_F_CLONED ·ÐÏ©¤Ï¾¤Î·ÐÏ©¤Ë¤è¤Ã¤ÆÊ£À½¤µ¤ì¤¿¡£
RTM_F_EQUALIZE ¥Þ¥ë¥Á¥­¥ã¥¹¥È¥¤¥¯¥©¥é¥¤¥¶¡¼ (¼ÂÁõ¤µ¤ì¤Æ¤¤¤Ê¤¤)

rtm_table ¤Ç¤Ï¥ë¡¼¥Æ¥£¥ó¥°¥Æ¡¼¥Ö¥ë¤ò»ØÄꤹ¤ë¡£

RT_TABLE_UNSPEC »ØÄꤵ¤ì¤Æ¤¤¤Ê¤¤¥ë¡¼¥Æ¥£¥ó¥°¥Æ¡¼¥Ö¥ë
RT_TABLE_DEFAULT ¥Ç¥Õ¥©¥ë¥È¤Î¥Æ¡¼¥Ö¥ë
RT_TABLE_MAIN ¥á¥¤¥ó¤Î¥Æ¡¼¥Ö¥ë
RT_TABLE_LOCAL ¥í¡¼¥«¥ë¥Æ¡¼¥Ö¥ë

¥æ¡¼¥¶¡¼¤Ï RT_TABLE_UNSPEC ¤È RT_TABLE_DEFAULT. ¤Î´Ö¤ÎǤ°Õ¤ÎÃͤòÍѤ¤¤ë¤³¤È¤¬¤Ç¤­¤ë¡£

°À­
rta_type
Ãͤη¿
ÀâÌÀ

RTA_UNSPEC
-
̵»ë¤µ¤ì¤ë
RTA_DST
protocol address
·ÐÏ©¤Î¹Ô¤­À襢¥É¥ì¥¹
RTA_SRC
protocol address
·ÐÏ©¤Îȯ¿®¸µ¥¢¥É¥ì¥¹
RTA_IIF
int
ÆþÎÏ¥¤¥ó¥¿¡¼¥Õ¥§¡¼¥¹¤Î index
RTA_OIF
int
½ÐÎÏ¥¤¥ó¥¿¡¼¥Õ¥§¡¼¥¹¤Î index
RTA_GATEWAY
protocol address
·ÐÏ©¤Î¥²¡¼¥È¥¦¥§¥¤
RTA_PRIORITY
int
·ÐÏ©¤ÎÍ¥ÀèÅÙ
RTA_PREFSRC


RTA_METRICS
int
·ÐÏ©¤Î¥á¥È¥ê¥Ã¥¯
RTA_MULTIPATH


RTA_PROTOINFO


RTA_FLOW


RTA_CACHEINFO


(¤³¤ì¤é¤ÎÃͤòËä¤á¤ë¤³¤È!)

RTM_NEWNEIGH, RTM_DELNEIGH, RTM_GETNEIGH
¶á˵¥Æ¡¼¥Ö¥ë (neighbour table) ¤Î¥¨¥ó¥È¥ê (Î㤨¤Ð ARP ¥¨¥ó¥È¥ê) ¤Î¾ðÊó¤òÄɲᦺï½ü¡¦¼èÆÀ¤¹¤ë¡£ ¤³¤Î¥á¥Ã¥»¡¼¥¸¤Ï ndmsg ¹½Â¤ÂΤòȼ¤¦¡£

struct ndmsg {

    unsigned char ndm_family;

    int           ndm_ifindex;  /* Interface index */

    __u16         ndm_state;    /* State */

    __u8          ndm_flags;    /* Flags */

    __u8          ndm_type;

};



struct nda_cacheinfo {

    __u32         ndm_confirmed;

    __u32         ndm_used;

    __u32         ndm_updated;

    __u32         ndm_refcnt;

};

ndm_state ¤Ï°Ê²¼¤Î¾õÂ֤Υӥåȥޥ¹¥¯¤Ç¤¢¤ë:

NUD_INCOMPLETE ¸½ºß¥ì¥¾¥ë¥ÖÃæ¤Î¥­¥ã¥Ã¥·¥å¥¨¥ó¥È¥ê
NUD_REACHABLE Æ°ºî³ÎǧºÑ¤ß¤Î¥­¥ã¥Ã¥·¥å¥¨¥ó¥È¥ê
NUD_STALE ´ü¸ÂÀÚ¤ì¤Î¥­¥ã¥Ã¥·¥å¥¨¥ó¥È¥ê
NUD_DELAY ¥¿¥¤¥ÞÂÔ¤Á¤Î¥­¥ã¥Ã¥·¥å¥¨¥ó¥È¥ê
NUD_PROBE ºÆ³ÎǧÃæ¤Î¥­¥ã¥Ã¥·¥å¥¨¥ó¥È¥ê
NUD_FAILED ÉÔÀµ¤Ê¥­¥ã¥Ã¥·¥å¥¨¥ó¥È¥ê
NUD_NOARP ¹Ô¤­À襭¥ã¥Ã¥·¥å¤Î¤Ê¤¤¥Ç¥Ð¥¤¥¹
NUD_PERMANENT ÀÅŪ¤Ê¥¨¥ó¥È¥ê

Í­¸ú¤Ê ndm_flags ¤Ï°Ê²¼¤ÎÄ̤ê:

NTF_PROXY ¥×¥í¥¯¥· arp ¥¨¥ó¥È¥ê
NTF_ROUTER IPv6 ¥ë¡¼¥¿

(¹½Â¤ÂÎ¥á¥ó¥Ð¤Îµ­½Ò¤ò¤â¤¦¤Á¤ç¤Ã¤È²þÎɤ¹¤ë¤³¤È)

rtaddr ¹½Â¤ÂΤϡ¢ rta_type ¥Õ¥£¡¼¥ë¥É¤Ë±þ¤¸¤Æ¤½¤ì¤¾¤ì°Ê²¼¤Î°ÕÌ£¤ò»ý¤Ä:

NDA_UNSPEC ̤ÃΤΥ¿¥¤¥×
NDA_DST ¶á˵¥­¥ã¥Ã¥·¥å¥Í¥Ã¥È¥ï¡¼¥¯ÁؤιԤ­À襢¥É¥ì¥¹
NDA_LLADDR ¶á˵¥­¥ã¥Ã¥·¥å¥ê¥ó¥¯ÁؤΥ¢¥É¥ì¥¹
NDA_CACHEINFO ¥­¥ã¥Ã¥·¥å¤ÎÅý·×

rta_type ¥Õ¥£¡¼¥ë¥É¤¬ NDA_CACHEINFO ¤Î¾ì¹ç¤Ë¤Ï¡¢ struct nda_cacheinfo ¥Ø¥Ã¥À¤¬Â³¤¯¡£

RTM_NEWRULE, RTM_DELRULE, RTM_GETRULE
¥ë¡¼¥Æ¥£¥ó¥°¥ë¡¼¥ë¤òÄɲᦺï½ü¡¦¼èÆÀ¤¹¤ë¡£ struct rtmsg ¤òȼ¤¦¡£
RTM_NEWQDISC, RTM_DELQDISC, RTM_GETQDISC
¥­¥å¡¼¥¤¥ó¥°¥ë¡¼¥ë¤òÄɲᦺï½ü¡¦¼èÆÀ¤¹¤ë¡£ ¤³¤Î¥á¥Ã¥»¡¼¥¸¤Ï struct tcmsg ¤òȼ¤¤¡¢¤Þ¤¿¤½¤Î¤¢¤È¤Ë°À­¤¬¤¤¤¯¤Ä¤«Â³¤¯¤³¤È¤â¤¢¤ë¡£

struct tcmsg {

    unsigned char    tcm_family;

    int              tcm_ifindex;   /* interface index */

    __u32            tcm_handle;    /* Qdisc handle */

    __u32            tcm_parent;    /* Parent qdisc */

    __u32            tcm_info;

};

°À­
rta_type
Ãͤη¿
ÀâÌÀ

TCA_UNSPEC
-
»ØÄꤵ¤ì¤Æ¤¤¤Ê¤¤
TCA_KIND
asciiz string
¥­¥å¡¼¥¤¥ó¥°¥ë¡¼¥ë¤Î̾Á°
TCA_OPTIONS
byte sequence
Qdisc ÆÃÍ­¤Î¥ª¥×¥·¥ç¥ó¤¬Â³¤¯
TCA_STATS
struct tc_stats
Qdisc ¤ÎÅý·×
TCA_XSTATS
qdisc specific
¥â¥¸¥å¡¼¥ëÆÃÍ­¤ÎÅý·×
TCA_RATE
struct tc_estimator
¥ì¡¼¥ÈÀ©¸Â

¤µ¤é¤Ë¡¢ qdisc ¥â¥¸¥å¡¼¥ëÆÃÍ­¤ÎÍÍ¡¹¤Ê°À­¤ò»ØÄê¤Ç¤­¤ë¡£ ¾ÜºÙ¤Ê¾ðÊó¤ÏŬÀڤʥ¤¥ó¥¯¥ë¡¼¥É¥Õ¥¡¥¤¥ë¤ò¸«¤è¡£

RTM_NEWTCLASS, RTM_DELTCLASS, RTM_GETTCLASS
¥È¥é¥Õ¥£¥Ã¥¯¥¯¥é¥¹¤òÄɲᦺï½ü¡¦¼èÆÀ¤¹¤ë¡£ ¤³¤ì¤é¤Î¥á¥Ã¥»¡¼¥¸¤Ï¡¢¾å½Ò¤Î struct tcmsg ¤òȼ¤¦¡£
RTM_NEWTFILTER, RTM_DELTFILTER, RTM_GETTFILTER
¥È¥é¥Õ¥£¥Ã¥¯¥Õ¥£¥ë¥¿¡¼¤Î¾ðÊó¤òÄɲᦺï½ü¡¦¼èÆÀ¤¹¤ë¡£ ¤³¤ì¤é¤Î¥á¥Ã¥»¡¼¥¸¤Ï¡¢¾å½Ò¤Î struct tcmsg ¤òȼ¤¦¡£

¥Ð¡¼¥¸¥ç¥ó

rtnetlink ¤Ï Linux 2.2 ¤Î¿·µ¡Ç½¤Ç¤¢¤ë¡£

¥Ð¥°

¤³¤Î man ¥Ú¡¼¥¸¤ÏÉÔ´°Á´¤Ç¤¢¤ë¡£

´ØÏ¢¹àÌÜ

cmsg(3), rtnetlink(3), ip(7), netlink(7)