mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-01-22 12:35:17 +00:00
util:netlink: Enable virNetlinkNewLink to support veth
Signed-off-by: Shi Lei <shi_lei@massclouds.com> Reviewed-by: Laine Stump <laine@redhat.com>
This commit is contained in:
parent
68164892fe
commit
1e0e535b02
@ -41,6 +41,9 @@ VIR_LOG_INIT("util.netlink");
|
|||||||
#define NETLINK_ACK_TIMEOUT_S (2*1000)
|
#define NETLINK_ACK_TIMEOUT_S (2*1000)
|
||||||
|
|
||||||
#if defined(WITH_LIBNL)
|
#if defined(WITH_LIBNL)
|
||||||
|
|
||||||
|
# include <linux/veth.h>
|
||||||
|
|
||||||
/* State for a single netlink event handle */
|
/* State for a single netlink event handle */
|
||||||
struct virNetlinkEventHandle {
|
struct virNetlinkEventHandle {
|
||||||
int watch;
|
int watch;
|
||||||
@ -535,6 +538,19 @@ virNetlinkNewLink(const char *ifname,
|
|||||||
NETLINK_MSG_NEST_END(nl_msg, infodata);
|
NETLINK_MSG_NEST_END(nl_msg, infodata);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (STREQ(type, "veth") && extra_args && extra_args->veth_peer) {
|
||||||
|
struct nlattr *infoveth = NULL;
|
||||||
|
|
||||||
|
NETLINK_MSG_NEST_START(nl_msg, infodata, IFLA_INFO_DATA);
|
||||||
|
NETLINK_MSG_NEST_START(nl_msg, infoveth, VETH_INFO_PEER);
|
||||||
|
nlmsg_reserve(nl_msg, sizeof(struct ifinfomsg), 0);
|
||||||
|
NETLINK_MSG_PUT(nl_msg, IFLA_IFNAME,
|
||||||
|
(strlen(extra_args->veth_peer) + 1),
|
||||||
|
extra_args->veth_peer);
|
||||||
|
NETLINK_MSG_NEST_END(nl_msg, infoveth);
|
||||||
|
NETLINK_MSG_NEST_END(nl_msg, infodata);
|
||||||
|
}
|
||||||
|
|
||||||
NETLINK_MSG_NEST_END(nl_msg, linkinfo);
|
NETLINK_MSG_NEST_END(nl_msg, linkinfo);
|
||||||
|
|
||||||
if (extra_args) {
|
if (extra_args) {
|
||||||
|
@ -84,6 +84,7 @@ struct _virNetlinkNewLinkData {
|
|||||||
const int *ifindex; /* The index for the 'link' device */
|
const int *ifindex; /* The index for the 'link' device */
|
||||||
const virMacAddr *mac; /* The MAC address of the device */
|
const virMacAddr *mac; /* The MAC address of the device */
|
||||||
const uint32_t *macvlan_mode; /* The mode of macvlan */
|
const uint32_t *macvlan_mode; /* The mode of macvlan */
|
||||||
|
const char *veth_peer; /* The peer name for veth */
|
||||||
};
|
};
|
||||||
|
|
||||||
int virNetlinkNewLink(const char *ifname,
|
int virNetlinkNewLink(const char *ifname,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user