Since dnsmasq supports --ra-param for a long time, this code is now unused. Signed-off-by: Ján Tomko <jtomko@xxxxxxxxxx> --- src/network/bridge_driver.c | 248 +----------------------------------- 1 file changed, 6 insertions(+), 242 deletions(-) diff --git a/src/network/bridge_driver.c b/src/network/bridge_driver.c index a4535b1b49..39f6ed14e1 100644 --- a/src/network/bridge_driver.c +++ b/src/network/bridge_driver.c @@ -371,20 +371,6 @@ networkDnsmasqConfigFileName(virNetworkDriverState *driver, } -static char * -networkRadvdPidfileBasename(const char *netname) -{return g_strdup_printf("%s-radvd", netname); -} - - -static char * -networkRadvdConfigFileName(virNetworkDriverState *driver, - const char *netname) -{ - return g_strdup_printf("%s/%s-radvd.conf", driver->radvdStateDir, netname); -} - - /* do needed cleanup steps and remove the network from the list */ static int networkRemoveInactive(virNetworkDriverState *driver, @@ -392,15 +378,13 @@ networkRemoveInactive(virNetworkDriverState *driver, { g_autofree char *leasefile = NULL; g_autofree char *customleasefile = NULL; - g_autofree char *radvdconfigfile = NULL; g_autofree char *configfile = NULL; - g_autofree char *radvdpidbase = NULL; g_autofree char *statusfile = NULL; g_autofree char *macMapFile = NULL; g_autoptr(dnsmasqContext) dctx = NULL; virNetworkDef *def = virNetworkObjGetPersistentDef(obj); - /* remove the (possibly) existing dnsmasq and radvd files */ + /* remove the (possibly) existing dnsmasq files */ if (!(dctx = dnsmasqContextNew(def->name, driver->dnsmasqStateDir))) { return -1; @@ -412,12 +396,6 @@ networkRemoveInactive(virNetworkDriverState *driver, if (!(customleasefile = networkDnsmasqLeaseFileNameCustom(driver, def->bridge))) return -1; - if (!(radvdconfigfile = networkRadvdConfigFileName(driver, def->name))) - return -1; - - if (!(radvdpidbase = networkRadvdPidfileBasename(def->name))) - return -1; - if (!(configfile = networkDnsmasqConfigFileName(driver, def->name))) return -1; @@ -436,10 +414,6 @@ networkRemoveInactive(virNetworkDriverState *driver, /* MAC map manager */ unlink(macMapFile); - /* radvd */ - unlink(radvdconfigfile); - virPidFileDelete(driver->pidDir, radvdpidbase); - /* remove status file */ unlink(statusfile); @@ -556,26 +530,15 @@ networkUpdateState(virNetworkObj *obj, virNetworkObjPortForEach(obj, networkUpdatePort, obj); - /* Try and read dnsmasq/radvd pids of active networks */ + /* Try and read dnsmasq pids of active networks */ if (virNetworkObjIsActive(obj) && def->ips && (def->nips > 0)) { - pid_t radvdPid; pid_t dnsmasqPid; - g_autofree char *radvdpidbase = NULL; ignore_value(virPidFileReadIfAlive(driver->pidDir, def->name, &dnsmasqPid, dnsmasqCapsGetBinaryPath(dnsmasq_caps))); virNetworkObjSetDnsmasqPid(obj, dnsmasqPid); - - radvdpidbase = networkRadvdPidfileBasename(def->name); - if (!radvdpidbase) - goto cleanup; - - ignore_value(virPidFileReadIfAlive(driver->pidDir, - radvdpidbase, - &radvdPid, RADVD)); - virNetworkObjSetRadvdPid(obj, radvdPid); } ret = 0; @@ -690,7 +653,6 @@ networkStateInitialize(bool privileged, network_driver->stateDir = g_strdup(RUNSTATEDIR "/libvirt/network"); network_driver->pidDir = g_strdup(RUNSTATEDIR "/libvirt/network"); network_driver->dnsmasqStateDir = g_strdup(LOCALSTATEDIR "/lib/libvirt/dnsmasq"); - network_driver->radvdStateDir = g_strdup(LOCALSTATEDIR "/lib/libvirt/radvd"); } else { configdir = virGetUserConfigDirectory(); rundir = virGetUserRuntimeDirectory(); @@ -700,7 +662,6 @@ networkStateInitialize(bool privileged, network_driver->stateDir = g_strdup_printf("%s/network/lib", rundir); network_driver->pidDir = g_strdup_printf("%s/network/run", rundir); network_driver->dnsmasqStateDir = g_strdup_printf("%s/dnsmasq/lib", rundir); - network_driver->radvdStateDir = g_strdup_printf("%s/radvd/lib", rundir); } if (g_mkdir_with_parents(network_driver->stateDir, 0777) < 0) { @@ -847,7 +808,6 @@ networkStateCleanup(void) g_free(network_driver->stateDir); g_free(network_driver->pidDir); g_free(network_driver->dnsmasqStateDir); - g_free(network_driver->radvdStateDir); virObjectUnref(network_driver->dnsmasqCaps); @@ -1697,170 +1657,6 @@ networkRestartDhcpDaemon(virNetworkDriverState *driver, } -static char radvd1[] = " AdvOtherConfigFlag off;\n\n"; -static char radvd2[] = " AdvAutonomous off;\n"; -static char radvd3[] = " AdvOnLink on;\n" - " AdvAutonomous on;\n" - " AdvRouterAddr off;\n"; - -static int -networkRadvdConfContents(virNetworkObj *obj, - char **configstr) -{ - virNetworkDef *def = virNetworkObjGetDef(obj); - g_auto(virBuffer) configbuf = VIR_BUFFER_INITIALIZER; - size_t i; - virNetworkIPDef *ipdef; - bool v6present = false, dhcp6 = false; - - *configstr = NULL; - - /* Check if DHCPv6 is needed */ - for (i = 0; (ipdef = virNetworkDefGetIPByIndex(def, AF_INET6, i)); i++) { - v6present = true; - if (ipdef->nranges || ipdef->nhosts) { - dhcp6 = true; - break; - } - } - - /* If there are no IPv6 addresses, then we are done */ - if (!v6present) - return 0; - - /* create radvd config file appropriate for this network; - * IgnoreIfMissing allows radvd to start even when the bridge is down - */ - virBufferAsprintf(&configbuf, "interface %s\n" - "{\n" - " AdvSendAdvert on;\n" - " IgnoreIfMissing on;\n" - " AdvManagedFlag %s;\n" - "%s", - def->bridge, - dhcp6 ? "on" : "off", - dhcp6 ? "\n" : radvd1); - - /* add a section for each IPv6 address in the config */ - for (i = 0; (ipdef = virNetworkDefGetIPByIndex(def, AF_INET6, i)); i++) { - int prefix; - g_autofree char *netaddr = NULL; - - prefix = virNetworkIPDefPrefix(ipdef); - if (prefix < 0) { - virReportError(VIR_ERR_INTERNAL_ERROR, - _("bridge '%s' has an invalid prefix"), - def->bridge); - return -1; - } - if (!(netaddr = virSocketAddrFormat(&ipdef->address))) - return -1; - - virBufferAsprintf(&configbuf, - " prefix %s/%d\n" - " {\n%s };\n", - netaddr, prefix, - dhcp6 ? radvd2 : radvd3); - } - - virBufferAddLit(&configbuf, "};\n"); - - *configstr = virBufferContentAndReset(&configbuf); - - return 0; -} - - -/* write file and return its name (which must be freed by caller) */ -static int -networkRadvdConfWrite(virNetworkDriverState *driver, - virNetworkObj *obj, - char **configFile) -{ - virNetworkDef *def = virNetworkObjGetDef(obj); - g_autofree char *configStr = NULL; - g_autofree char *myConfigFile = NULL; - - if (!configFile) - configFile = &myConfigFile; - - *configFile = NULL; - - if (networkRadvdConfContents(obj, &configStr) < 0) - return -1; - - if (!configStr) - return 0; - - /* construct the filename */ - if (!(*configFile = networkRadvdConfigFileName(driver, def->name))) - return -1; - - /* write the file */ - if (virFileWriteStr(*configFile, configStr, 0600) < 0) { - virReportSystemError(errno, - _("couldn't write radvd config file '%s'"), - *configFile); - return -1; - } - - return 0; -} - - -static int -networkStartRadvd(virNetworkDriverState *driver G_GNUC_UNUSED, - virNetworkObj *obj) -{ - virNetworkObjSetRadvdPid(obj, -1); - - return 0; -} - - -static int -networkRefreshRadvd(virNetworkDriverState *driver, - virNetworkObj *obj) -{ - virNetworkDef *def = virNetworkObjGetDef(obj); - g_autofree char *radvdpidbase = NULL; - g_autofree char *pidfile = NULL; - - if ((radvdpidbase = networkRadvdPidfileBasename(def->name)) && - (pidfile = virPidFileBuildPath(driver->pidDir, radvdpidbase))) { - /* radvd should not be running but in case it is */ - virPidFileForceCleanupPath(pidfile); - virNetworkObjSetRadvdPid(obj, -1); - } - return 0; -} - - -#if 0 -/* currently unused, so it causes a build error unless we #if it out */ -static int -networkRestartRadvd(virNetworkObj *obj) -{ - virNetworkDef *def = virNetworkObjGetDef(obj); - g_autofree char *radvdpidbase = NULL; - g_autofree char *pidfile = NULL; - - /* If there is a running radvd, kill it. Essentially ignore errors from the - * following two functions, since there's really no better recovery to be - * done than to just push ahead (and that may be exactly what's needed). - */ - if ((radvdpidbase = networkRadvdPidfileBasename(def->name)) && - (pidfile = virPidFileBuildPath(driver->pidDir, radvdpidbase))) { - virPidFileForceCleanupPath(pidfile); - virNetworkObjSetRadvdPid(obj, -1); - } - - /* now start radvd if it should be started */ - return networkStartRadvd(obj); -} -#endif /* #if 0 */ - - static int networkRefreshDaemonsHelper(virNetworkObj *obj, void *opaque) @@ -1877,13 +1673,11 @@ networkRefreshDaemonsHelper(virNetworkObj *obj, case VIR_NETWORK_FORWARD_ROUTE: case VIR_NETWORK_FORWARD_OPEN: /* Only the three L3 network types that are configured by - * libvirt will have a dnsmasq or radvd daemon associated + * libvirt will have a dnsmasq daemon associated * with them. Here we send a SIGHUP to an existing - * dnsmasq and/or radvd, or restart them if they've - * disappeared. + * dnsmasq, or restart it if it has disappeared. */ networkRefreshDhcpDaemon(driver, obj); - networkRefreshRadvd(driver, obj); break; case VIR_NETWORK_FORWARD_BRIDGE: @@ -1906,7 +1700,7 @@ networkRefreshDaemonsHelper(virNetworkObj *obj, } -/* SIGHUP/restart any dnsmasq or radvd daemons. +/* SIGHUP/restart any dnsmasq * This should be called when libvirtd is restarted. */ static void @@ -2263,10 +2057,6 @@ networkStartNetworkVirtual(virNetworkDriverState *driver, dnsmasqStarted = true; - /* start radvd if there are any ipv6 addresses */ - if (v6present && networkStartRadvd(driver, obj) < 0) - goto error; - if (virNetDevBandwidthSet(def->bridge, def->bandwidth, true, true) < 0) goto error; @@ -2300,28 +2090,16 @@ networkStartNetworkVirtual(virNetworkDriverState *driver, static int -networkShutdownNetworkVirtual(virNetworkDriverState *driver, +networkShutdownNetworkVirtual(virNetworkDriverState *driver G_GNUC_UNUSED, virNetworkObj *obj) { virNetworkDef *def = virNetworkObjGetDef(obj); - pid_t radvdPid; pid_t dnsmasqPid; if (def->bandwidth) virNetDevBandwidthClear(def->bridge); virNetworkObjUnrefMacMap(obj); - - radvdPid = virNetworkObjGetRadvdPid(obj); - if (radvdPid > 0) { - g_autofree char *radvdpidbase = NULL; - - kill(radvdPid, SIGTERM); - /* attempt to delete the pidfile we created */ - if ((radvdpidbase = networkRadvdPidfileBasename(def->name))) - virPidFileDelete(driver->pidDir, radvdpidbase); - } - dnsmasqPid = virNetworkObjGetDnsmasqPid(obj); if (dnsmasqPid > 0) kill(dnsmasqPid, SIGTERM); @@ -2350,12 +2128,6 @@ networkShutdownNetworkVirtual(virNetworkDriverState *driver, kill(dnsmasqPid, SIGKILL); virNetworkObjSetDnsmasqPid(obj, -1); - radvdPid = virNetworkObjGetRadvdPid(obj); - if (radvdPid > 0 && - (kill(radvdPid, 0) == 0)) - kill(radvdPid, SIGKILL); - virNetworkObjSetRadvdPid(obj, -1); - return 0; } @@ -3634,14 +3406,6 @@ networkUpdate(virNetworkPtr net, } - if (section == VIR_NETWORK_SECTION_IP) { - /* only a change in IP addresses will affect radvd, and all of radvd's - * config is stored in the conf file which will be re-read with a SIGHUP. - */ - if (networkRefreshRadvd(driver, obj) < 0) - goto cleanup; - } - /* save current network state to disk */ if ((ret = virNetworkObjSaveStatus(driver->stateDir, obj, network_driver->xmlopt)) < 0) -- 2.31.1