[libvirt PATCH 10/17] network: remove any code dealing with radvd

Ján Tomko jtomko at redhat.com
Tue Dec 14 19:09:26 UTC 2021


Since dnsmasq supports --ra-param for a long time, this code is now
unused.

Signed-off-by: Ján Tomko <jtomko at redhat.com>
---
 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




More information about the libvir-list mailing list