linux下使用netlink获取gateway的IP地址

要在linux下的程序中获取gateway的IP地址,使用netlink是一种直接、可靠的方法,不需要依赖其它命令,直接从linux内核获取信息,netlink编程的中文资料很少,本文试图用尽可能简单的方式讨论使用netlink获取gataway的IP地址的编程方法,并有大量篇幅介绍netlink的相关数据结构和编程方法,假定阅读本文的读者对linux下编程有一定了解,具备一定的C语言能力,熟悉IPv4的socket编程。


在linux编程的资料中,netlink编程的资料并不多,但netlink编程显然是本文无法越过的一道坎,所以下面需要用一定篇幅对netlink编程做个介绍;本文的最终目标是使用netlink这种与linux内核通信的机制,从内核获得路由表并从中找到gateway的IP地址。在具体实践中,获取路由表或者获取gateway的IP地址通常并不需要使用netlink编程实现,这种方法对应用层编程来说显得有些繁琐,本文主要还是作为netlink编程的一个范例,并以此为题介绍一些netlink的编程方法;有关其它获取gateway的IP地址的方法,请参见另一篇文章《从proc文件系统中获取gateway的IP地址》。

1. netlink socket及netlink消息结构

  • netlink socket

    • netlink是一个socket࿰

你可能感兴趣的:(网络编程,C语言,Linux相关,linux,gateway,tcp/ip,netlink,网络编程)