linux下sysctl()函数初探

2 篇文章 0 订阅
1 篇文章 0 订阅

不多说, 直接上代码:


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



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值