Linux以编程方式上/下一个接口内核

who*_*hoi 9 c linux network-programming linux-kernel

在内核空间中启用或禁用接口的编程方式是什么?应该做什么?

And*_*ovs 14

...通过使用IOCTL ...

ioctl(skfd, SIOCSIFFLAGS, &ifr);
Run Code Online (Sandbox Code Playgroud)

...根据您是否要相应地启用或关闭接口,设置或取消设置IFF_UP位,即:

static int set_if_up(char *ifname, short flags)
{
    return set_if_flags(ifname, flags | IFF_UP);
}

static int set_if_down(char *ifname, short flags)
{
    return set_if_flags(ifname, flags & ~IFF_UP);
}
Run Code Online (Sandbox Code Playgroud)

代码从Linux网络文档中复制粘贴.


Tar*_*arc 11

将eth0提升的代码:

int sockfd;
struct ifreq ifr;

sockfd = socket(AF_INET, SOCK_DGRAM, 0);

if (sockfd < 0)
    return;

memset(&ifr, 0, sizeof ifr);

strncpy(ifr.ifr_name, "eth0", IFNAMSIZ);

ifr.ifr_flags |= IFF_UP;
ioctl(sockfd, SIOCSIFFLAGS, &ifr);
Run Code Online (Sandbox Code Playgroud)