不多说, 直接上代码:
ls /proc/sys/net/ipv4/ip_forward
/proc/sys/net/ipv4/ip_forward
$ cat /proc/sys/net/ipv4/ip_forward
0
#include <stdio.h>
#include <sys/sysctl.h>
int main()
{
int ipforward;
size_t len;
///
// $ cat /proc/sys/net/ipv4/ip_forward
// 0
//
///
// $ ls /proc/sys/net/ipv4/ip_forward
// /proc/sys/net/ipv4/ip_forward
//
///
// Reference to /usr/src/linux-headers-3.13.0-32/include/uapi/linux/sysctl.h
//
// 50 enum
// 51 {
// 52 CTL_KERN=1, /* General kernel info and control */
// 53 CTL_VM=2, /* VM management */
// 54 CTL_NET=3, /* Networking */
// ...
// 67 };
//
// 202 enum
// 203 {
// 204 NET_CORE=1,
// 205 NET_ETHER=2,
// 206 NET_802=3,
// 207 NET_UNIX=4,
// 208 NET_IPV4=5,
// ...
// 225 };
//
// 331 enum
// 332 {
// 333 /* v2.0 compatibile variables */
// 334 NET_IPV4_FORWARD=8,
// 335 NET_IPV4_DYNADDR=9,
// 336
// 337 NET_IPV4_CONF=16,
// 338 NET_IPV4_NEIGH=17,
// ...
// 428 };
int mib[4] = {CTL_NET, NET_IPV4, NET_IPV4_FORWARD};
len = sizeof(ipforward);
if (0 == sysctl(mib, 4, &ipforward, &len, NULL, 0))
{
printf("ipforward: %s\n", ipforward? "Enable" : "Disable")
}
else
{
perror("sysctl");
}
return 0;
}
执行:
$ bin/ipforward
ipforward: Disable