[PATCH rhel7-branch 3/6] network: add bridge support to kickstart (#1075195)

Radek Vykydal rvykydal at redhat.com
Thu Sep 25 11:30:32 UTC 2014


Resolves: rhbz#1075195
---
 dracut/parse-kickstart | 41 +++++++++++++++++++++++++++++++++++++++--
 1 file changed, 39 insertions(+), 2 deletions(-)

diff --git a/dracut/parse-kickstart b/dracut/parse-kickstart
index c146f17..185f768 100755
--- a/dracut/parse-kickstart
+++ b/dracut/parse-kickstart
@@ -348,7 +348,7 @@ def ksnet_to_ifcfg(net, filename=None):
     if not dev:
         return
     if (not os.path.isdir("/sys/class/net/%s" % dev)
-        and not net.bondslaves and not net.teamslaves):
+        and not net.bondslaves and not net.teamslaves and not net.bridgeslaves):
         log.info("can't find device %s" % dev)
         return
     ifcfg = dict()
@@ -432,7 +432,7 @@ def ksnet_to_ifcfg(net, filename=None):
                             'NAME' : "%s slave %s" % (dev, i),
                             'UUID' : str(uuid.uuid4()),
                             'ONBOOT' : "yes",
-                            'MASTER' : dev,
+                            'MASTER' : ifcfg['UUID'],
                             'HWADDR' : readsysfile("/sys/class/net/%s/address" % slave),
                           }
             add_s390_settings(slave, slave_ifcfg)
@@ -464,6 +464,43 @@ def ksnet_to_ifcfg(net, filename=None):
             log.info("writing ifcfg %s for slave %s of team %s" % (slave_filename, slave, dev))
             write_ifcfg(slave_filename, slave_ifcfg)
 
+    if net.bridgeslaves:
+
+        ifcfg.pop('HWADDR', None)
+        ifcfg['TYPE'] = "Bridge"
+        ifcfg['NAME'] = "Bridge connection %s" % dev
+
+        options = {}
+        for opt in net.bridgeopts.split(","):
+            key, _sep, value = opt.partition("=")
+            if not value:
+                log.error("Invalid bridge option %s", opt)
+                continue
+            key = key.replace('-', '_')
+            options[key] = value
+        stp = options.pop("stp", None)
+        if stp:
+            ifcfg['STP'] = stp
+        delay = options.pop("forward_delay", None)
+        if delay:
+            ifcfg['DELAY'] = delay
+        if options:
+            keyvalues = ["%s=%s" % (key, options[key]) for key in options]
+            ifcfg['BRIDGING_OPTS'] = '"' + " ".join(keyvalues) + '"'
+
+        for i, slave in enumerate(net.bridgeslaves.split(","), 1):
+            slave_ifcfg = {
+                            'TYPE' : "Ethernet",
+                            'NAME' : "%s slave %s" % (dev, i),
+                            'UUID' : str(uuid.uuid4()),
+                            'ONBOOT' : "yes",
+                            'BRIDGE' : dev,
+                            'HWADDR' : readsysfile("/sys/class/net/%s/address" % slave),
+                          }
+            slave_filename = "/tmp/ifcfg/ifcfg-%s" % "_".join(slave_ifcfg['NAME'].split(" "))
+            log.info("writing ifcfg %s for slave %s of bridge %s" % (slave_filename, slave, dev))
+            write_ifcfg(slave_filename, slave_ifcfg)
+
     if net.vlanid:
         interface_name = net.interfacename or "%s.%s" % (dev, net.vlanid)
         ifcfg.pop('HWADDR', None)
-- 
1.9.3



More information about the anaconda-patches mailing list