mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-02-22 11:22:23 +00:00
util: add a function to insert new interfaces to IPv6CheckForwarding list
This same operation needs to be done in multiple places, so move the inline code into a separate function. Signed-off-by: Laine Stump <laine@laine.org> Reviewed-by: Erik Skultety <eskultet@redhat.com>
This commit is contained in:
parent
0ea259b6bf
commit
37bb6facfc
@ -505,6 +505,25 @@ struct virNetDevIPCheckIPv6ForwardingData {
|
||||
size_t ndevices;
|
||||
};
|
||||
|
||||
|
||||
static int
|
||||
virNetDevIPCheckIPv6ForwardingAddIF(struct virNetDevIPCheckIPv6ForwardingData *data,
|
||||
char **ifname)
|
||||
{
|
||||
size_t i;
|
||||
|
||||
/* add ifname to the array if it's not already there
|
||||
* (ifname is char** so VIR_APPEND_ELEMENT() will move the
|
||||
* original pointer out of the way and avoid having it freed)
|
||||
*/
|
||||
for (i = 0; i < data->ndevices; i++) {
|
||||
if (STREQ(data->devices[i], *ifname))
|
||||
return 0;
|
||||
}
|
||||
return VIR_APPEND_ELEMENT(data->devices, data->ndevices, *ifname);
|
||||
}
|
||||
|
||||
|
||||
static int
|
||||
virNetDevIPCheckIPv6ForwardingCallback(struct nlmsghdr *resp,
|
||||
void *opaque)
|
||||
@ -515,8 +534,6 @@ virNetDevIPCheckIPv6ForwardingCallback(struct nlmsghdr *resp,
|
||||
struct virNetDevIPCheckIPv6ForwardingData *data = opaque;
|
||||
int len = RTM_PAYLOAD(resp);
|
||||
int oif = -1;
|
||||
size_t i;
|
||||
bool hasDevice;
|
||||
VIR_AUTOFREE(char *) ifname = NULL;
|
||||
|
||||
/* Ignore messages other than route ones */
|
||||
@ -553,13 +570,7 @@ virNetDevIPCheckIPv6ForwardingCallback(struct nlmsghdr *resp,
|
||||
accept_ra = virNetDevIPGetAcceptRA(ifname);
|
||||
VIR_DEBUG("Checking route for device %s, accept_ra: %d", ifname, accept_ra);
|
||||
|
||||
hasDevice = false;
|
||||
for (i = 0; i < data->ndevices && !hasDevice; i++) {
|
||||
if (STREQ(data->devices[i], ifname))
|
||||
hasDevice = true;
|
||||
}
|
||||
if (accept_ra != 2 && !hasDevice &&
|
||||
VIR_APPEND_ELEMENT(data->devices, data->ndevices, ifname) < 0)
|
||||
if (accept_ra != 2 && virNetDevIPCheckIPv6ForwardingAddIF(data, &ifname) < 0)
|
||||
return -1;
|
||||
|
||||
return 0;
|
||||
|
Loading…
x
Reference in New Issue
Block a user