linux下sysctl()函数初探

不多说, 直接上代码:


ls /proc/sys/net/ipv4/ip_forward 
/proc/sys/net/ipv4/ip_forward


$ cat /proc/sys/net/ipv4/ip_forward 
0


#include 
#include 

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



你可能感兴趣的:(linux,C,网络,unp)