rtnetlink_socket = socket(AF_NETLINK, int socket_type, NETLINK_ROUTE);
struct rtattr {
    unsigned short rta_len;    /* Length of option */
    unsigned short rta_type;   /* Type of option */
    /* Data follows */
};
これらの属性の操作は、 RTA_* マクロか libnetlink を通してのみ 行うべきである。 rtnetlink(3) を見よ。
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 である。
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 | アドレス情報 | 
struct rtmsg {
    unsigned char rtm_family;   /* Address family of route */
    unsigned char rtm_dst_len;  /* Length of destination */
    unsigned char rtm_src_len;  /* Length of source */
    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 | 
(これらの値を埋めること!)
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 ヘッダが続く。
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 モジュール特有の様々な属性を指定できる。 詳細な情報は適切なインクルードファイルを見よ。