Linux libnetlink 編程

netlink顿天,rtnetlink绘趋,libnetlink 三者之間的關(guān)系是:

  • netlink 是Linux內(nèi)核和用戶空間程序消息通信的一種方法闭翩。
  • rtnetlink 是 netlink 的一個子集方咆,用于訪問內(nèi)核中的路由表票编,網(wǎng)口褪储,IP地址等信息。
  • libnetlink 是為了方便使用rtnetlink服務(wù)而設(shè)計的API慧域。
image.png
為了安裝libnetlink.h鲤竹,執(zhí)行下面命令:
$ dnf install iproute-devel
例1. 打印所有的IP地址
# cat list-addr.c

#include <stdio.h>      //perror()
#include <stdlib.h>     //exit()
#include <libnetlink.h> //rtnl_handle

void die(char *s)
{
    perror(s);
    exit(1);
}

int get_addr(const struct sockaddr_nl *who, struct nlmsghdr *h, void *arg)
{
    struct ifaddrmsg * addr;
    struct rtattr * attr;
    int len;

    addr = NLMSG_DATA(h);
    len = RTM_PAYLOAD(h);

    /* loop over all attributes for the NEWLINK message */
    for (attr = IFLA_RTA(addr); RTA_OK(attr, len); attr = RTA_NEXT(attr, len))
    {
        switch (attr->rta_type)
        {
        case IFA_LABEL:
            printf("Interface  : %s\n", (char *)RTA_DATA(attr));
            break;
        case IFA_LOCAL:
        {
            int ip = *(int*)RTA_DATA(attr);
            unsigned char bytes[4];
            bytes[0] = ip & 0xFF;
            bytes[1] = (ip >> 8) & 0xFF;
            bytes[2] = (ip >> 16) & 0xFF;
            bytes[3] = (ip >> 24) & 0xFF;
            printf("IP Address : %d.%d.%d.%d\n", bytes[0], bytes[1], bytes[2], bytes[3]);
            break;
        }
        default:
            break;
        }
    }
}

int main()
{
    struct rtnl_handle rth;

    if (rtnl_open(&rth, 0))
    {
        die("rtnl_open()");
    }

    if (rtnl_wilddump_request(&rth, AF_INET, RTM_GETADDR) < 0) {
        die("rtnl_wilddump_request()");
    }

    if (rtnl_dump_filter(&rth, get_addr, NULL) < 0) {
        die("rtnl_dump_filter()");
    }

    rtnl_close( &rth );
    return 0;
}
# gcc list-addr.c -lnetlink -o list-addr && ./list-addr
IP Address : 127.0.0.1
Interface  : lo
IP Address : 10.254.52.242
Interface  : eth0
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市昔榴,隨后出現(xiàn)的幾起案子辛藻,更是在濱河造成了極大的恐慌,老刑警劉巖互订,帶你破解...
    沈念sama閱讀 217,826評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件吱肌,死亡現(xiàn)場離奇詭異,居然都是意外死亡仰禽,警方通過查閱死者的電腦和手機氮墨,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,968評論 3 395
  • 文/潘曉璐 我一進店門纺蛆,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人规揪,你說我怎么就攤上這事犹撒。” “怎么了粒褒?”我有些...
    開封第一講書人閱讀 164,234評論 0 354
  • 文/不壞的土叔 我叫張陵识颊,是天一觀的道長。 經(jīng)常有香客問我奕坟,道長祥款,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,562評論 1 293
  • 正文 為了忘掉前任月杉,我火速辦了婚禮刃跛,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘苛萎。我一直安慰自己桨昙,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,611評論 6 392
  • 文/花漫 我一把揭開白布腌歉。 她就那樣靜靜地躺著蛙酪,像睡著了一般。 火紅的嫁衣襯著肌膚如雪翘盖。 梳的紋絲不亂的頭發(fā)上桂塞,一...
    開封第一講書人閱讀 51,482評論 1 302
  • 那天,我揣著相機與錄音馍驯,去河邊找鬼阁危。 笑死,一個胖子當(dāng)著我的面吹牛汰瘫,可吹牛的內(nèi)容都是我干的狂打。 我是一名探鬼主播,決...
    沈念sama閱讀 40,271評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼混弥,長吁一口氣:“原來是場噩夢啊……” “哼趴乡!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起剑逃,我...
    開封第一講書人閱讀 39,166評論 0 276
  • 序言:老撾萬榮一對情侶失蹤浙宜,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后蛹磺,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體粟瞬,經(jīng)...
    沈念sama閱讀 45,608評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡霜幼,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,814評論 3 336
  • 正文 我和宋清朗相戀三年舅巷,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,926評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡插勤,死狀恐怖溶诞,靈堂內(nèi)的尸體忽然破棺而出糠排,到底是詐尸還是另有隱情傍衡,我是刑警寧澤,帶...
    沈念sama閱讀 35,644評論 5 346
  • 正文 年R本政府宣布区匠,位于F島的核電站干像,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏驰弄。R本人自食惡果不足惜麻汰,卻給世界環(huán)境...
    茶點故事閱讀 41,249評論 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望戚篙。 院中可真熱鬧五鲫,春花似錦、人聲如沸岔擂。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,866評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽乱灵。三九已至塑崖,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間阔蛉,已是汗流浹背弃舒。 一陣腳步聲響...
    開封第一講書人閱讀 32,991評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留状原,地道東北人。 一個月前我還...
    沈念sama閱讀 48,063評論 3 370
  • 正文 我出身青樓苗踪,卻偏偏與公主長得像颠区,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子通铲,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,871評論 2 354

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理毕莱,服務(wù)發(fā)現(xiàn),斷路器颅夺,智...
    卡卡羅2017閱讀 134,656評論 18 139
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,117評論 25 707
  • 1.這篇文章不是本人原創(chuàng)的朋截,只是個人為了對這部分知識做一個整理和系統(tǒng)的輸出而編輯成的,在此鄭重地向本文所引用文章的...
    SOMCENT閱讀 13,063評論 6 174
  • 個人認為吧黄,Goodboy1881先生的TCP /IP 協(xié)議詳解學(xué)習(xí)博客系列博客是一部非常精彩的學(xué)習(xí)筆記部服,這雖然只是...
    貳零壹柒_fc10閱讀 5,054評論 0 8
  • “像我這么善良的人還去哪兒找啊”,以前的我經(jīng)常這么說拗慨。但是最近我越來越意識到自己一點兒也不善良廓八。我寫這篇只是發(fā)現(xiàn)了...
    雪糕同學(xué)閱讀 1,529評論 0 0