diff options
author | Stefano Brivio <sbrivio@redhat.com> | 2024-08-15 00:09:43 +0200 |
---|---|---|
committer | Stefano Brivio <sbrivio@redhat.com> | 2024-08-15 09:14:47 +0200 |
commit | 0c74068f5643b87db779bb92c73679b257e03a9c (patch) | |
tree | 26754626af5c880a40f37d73c61eab68c15494f7 | |
parent | 8231ce54c3953186f07f9aaebfd6986a303005aa (diff) | |
download | passt-0c74068f5643b87db779bb92c73679b257e03a9c.tar passt-0c74068f5643b87db779bb92c73679b257e03a9c.tar.gz passt-0c74068f5643b87db779bb92c73679b257e03a9c.tar.bz2 passt-0c74068f5643b87db779bb92c73679b257e03a9c.tar.lz passt-0c74068f5643b87db779bb92c73679b257e03a9c.tar.xz passt-0c74068f5643b87db779bb92c73679b257e03a9c.tar.zst passt-0c74068f5643b87db779bb92c73679b257e03a9c.zip |
netlink, pasta: Turn nl_link_up() into a generic function to set link flags
In the next patches, we'll reuse it to set flags other than IFF_UP.
Signed-off-by: Stefano Brivio <sbrivio@redhat.com>
Reviewed-by: David Gibson <david@gibson.dropbear.id.au>
-rw-r--r-- | netlink.c | 11 | ||||
-rw-r--r-- | netlink.h | 3 | ||||
-rw-r--r-- | pasta.c | 4 |
3 files changed, 11 insertions, 7 deletions
@@ -968,13 +968,16 @@ int nl_link_set_mtu(int s, unsigned int ifi, int mtu) } /** - * nl_link_up() - Bring link up + * nl_link_set_flags() - Set link flags * @s: Netlink socket * @ifi: Interface index + * @set: Device flags to set + * @change: Mask of device flag changes * * Return: 0 on success, negative error code on failure */ -int nl_link_up(int s, unsigned int ifi) +int nl_link_set_flags(int s, unsigned int ifi, + unsigned int set, unsigned int change) { struct req_t { struct nlmsghdr nlh; @@ -982,8 +985,8 @@ int nl_link_up(int s, unsigned int ifi) } req = { .ifm.ifi_family = AF_UNSPEC, .ifm.ifi_index = ifi, - .ifm.ifi_flags = IFF_UP, - .ifm.ifi_change = IFF_UP, + .ifm.ifi_flags = set, + .ifm.ifi_change = change, }; return nl_do(s, &req, RTM_NEWLINK, 0, sizeof(req)); @@ -24,6 +24,7 @@ int nl_addr_dup(int s_src, unsigned int ifi_src, int nl_link_get_mac(int s, unsigned int ifi, void *mac); int nl_link_set_mac(int s, unsigned int ifi, const void *mac); int nl_link_set_mtu(int s, unsigned int ifi, int mtu); -int nl_link_up(int s, unsigned int ifi); +int nl_link_set_flags(int s, unsigned int ifi, + unsigned int set, unsigned int change); #endif /* NETLINK_H */ @@ -288,7 +288,7 @@ void pasta_ns_conf(struct ctx *c) { int rc = 0; - rc = nl_link_up(nl_sock_ns, 1 /* lo */); + rc = nl_link_set_flags(nl_sock_ns, 1 /* lo */, IFF_UP, IFF_UP); if (rc < 0) die("Couldn't bring up loopback interface in namespace: %s", strerror(-rc)); @@ -306,7 +306,7 @@ void pasta_ns_conf(struct ctx *c) if (c->mtu != -1) nl_link_set_mtu(nl_sock_ns, c->pasta_ifi, c->mtu); - nl_link_up(nl_sock_ns, c->pasta_ifi); + nl_link_set_flags(nl_sock_ns, c->pasta_ifi, IFF_UP, IFF_UP); if (c->ifi4) { if (c->ip4.no_copy_addrs) { |