[PATCH phosphor-networkd 1/2] org.openbmc.NetworkManager : Bug fixes, SetHwAddress & EnableDHCP

Daniel Axtens dja at axtens.net
Wed Feb 10 14:58:09 AEDT 2016


OpenBMC Patches <openbmc-patches at stwcx.xyz> writes:

Hi,

Thanks for your patch.

Could you please split it into different parts for the different things
you do?

I can see whitespace fixes and several different changes - it's really
difficult to review it if all these things are mixed together.

Thanks in advance!

Regards,
Daniel

> From: Hariharasubramanian R <hramasub at in.ibm.com>
>
> ---
>  netman.py | 82 +++++++++++++++++++++++++++++++++++++++++----------------------
>  1 file changed, 54 insertions(+), 28 deletions(-)
>
> diff --git a/netman.py b/netman.py
> index 3978cef..7f9d14e 100755
> --- a/netman.py
> +++ b/netman.py
> @@ -16,25 +16,27 @@ DBUS_NAME = 'org.openbmc.NetworkManager'
>  OBJ_NAME = '/org/openbmc/NetworkManager/Interface'
>  
>  network_providers = {
> -    'networkd' : { 
> -        'bus_name' : 'org.freedesktop.network1',
> -        'ip_object_name' : '/org/freedesktop/network1/network/default',
> -        'hw_object_name' : '/org/freedesktop/network1/link/_31',
> -        'interface_name' : 'org.freedesktop.network1.Network',
> -        'method' : 'org.freedesktop.network1.Network.SetAddr'
> -    },
> -    'NetworkManager' : {
> -        'bus_name' : 'org.freedesktop.NetworkManager',
> -        'ip_object_name' : '/org/freedesktop/NetworkManager',
> -        'hw_object_name' : '/org/freedesktop/NetworkManager',
> -        'interface_name' : 'org.freedesktop.NetworkManager',
> -        'method' : 'org.freedesktop.NetworkManager' # FIXME: 
> -    },  
> +	'networkd' : { 
> +		'bus_name' : 'org.freedesktop.network1',
> +		'ip_object_name' : '/org/freedesktop/network1/network/default',
> +		'hw_object_name' : '/org/freedesktop/network1/link/_31',
> +		'ip_if_name' : 'org.freedesktop.network1.Network',
> +		'hw_if_name' : 'org.freedesktop.network1.Link',
> +		'method' : 'org.freedesktop.network1.Network.SetAddr'
> +	},
> +	'NetworkManager' : {
> +		'bus_name' : 'org.freedesktop.NetworkManager',
> +		'ip_object_name' : '/org/freedesktop/NetworkManager',
> +		'hw_object_name' : '/org/freedesktop/NetworkManager',
> +		'ip_if_name' : 'org.freedesktop.NetworkManager',
> +		'hw_if_name' : 'org.freedesktop.NetworkManager',
> +		'method' : 'org.freedesktop.NetworkManager' # FIXME: 
> +	},	
>  }
>  
>  def getPrefixLen(mask):
> -    prefixLen = sum([bin(int(x)).count('1') for x in mask.split('.')])
> -    return prefixLen
> +	prefixLen = sum([bin(int(x)).count('1') for x in mask.split('.')])
> +	return prefixLen
>  
>  class IfAddr ():
>      def __init__ (self, family, scope, flags, prefixlen, addr, gw):
> @@ -58,7 +60,7 @@ class NetMan (dbus.service.Object):
>          netprov     = network_providers [self.provider]
>          bus_name    = netprov ['bus_name']
>          obj_path    = netprov ['ip_object_name']
> -        intf_name   = netprov ['interface_name']
> +        intf_name   = netprov ['ip_if_name']
>  
>          obj = self.bus.get_object(bus_name, obj_path)
>          intf = dbus.Interface(obj, intf_name)
> @@ -73,14 +75,14 @@ class NetMan (dbus.service.Object):
>          bus_name    = netprov ['bus_name']
>  
>          if (target == "ip"):
> -            intf_name   = 'org.freedesktop.network1.Network'
> +            intf_name   = netprov ['ip_if_name'] #'org.freedesktop.network1.Network'
>              obj_path    = netprov ['ip_object_name']
>              obj = self.bus.get_object(bus_name, obj_path)
>              intf = dbus.Interface(obj, intf_name)
>              return intf.GetAddress (device)
>  
>          if (target == "mac"):
> -            intf_name   = 'org.freedesktop.network1.Link'
> +            intf_name   = netprov ['hw_if_name'] #'org.freedesktop.network1.Link'
>              obj_path    = netprov ['hw_object_name']
>              obj = self.bus.get_object(bus_name, obj_path)
>              intf = dbus.Interface(obj, intf_name)
> @@ -88,16 +90,35 @@ class NetMan (dbus.service.Object):
>              print mac
>              return mac
>  
> -
> -
>      @dbus.service.method(DBUS_NAME, "", "")
>      def test(self):
>          print("TEST")
>  
> +    @dbus.service.method(DBUS_NAME, "s", "x")
> +    def EnableDHCP (self, device):
> +        confFile = "/etc/systemd/network/10-bmc-" + device + "-" + "dhcp.network"
> +        if os.path.exists(confFile):
> +            return 0
> +
> +        print("Making .network file...")
> +        networkconf = open (confFile, "w+") 
> +        networkconf.write ('[Match]'+ '\n')
> +        networkconf.write ('Name=' + (device) + '\n')
> +        networkconf.write ('[Network]' + '\n')
> +        networkconf.write ('DHCP=yes')
> +        networkconf.close ()
> +
> +        print("Restarting networkd service...")
> +        call(["systemctl", "restart", "systemd-networkd.service"])
> +        return 0
> +        #return self._setAddr ("add", device, ipaddr, netmask, 2, 0, 253, gateway)
> +
>      @dbus.service.method(DBUS_NAME, "ssss", "x")
>      def AddAddress4 (self, device, ipaddr, netmask, gateway):
>          prefixLen = getPrefixLen (netmask)
> -        confFile = "/etc/systemd/network/10-bmc-" + device + ".network"
> +        confFile = "/etc/systemd/network/10-bmc-" + device + "-" + ipaddr + '_' + str(prefixLen) + ".network"
> +        if os.path.exists(confFile):
> +            return 0
>  
>          print("Making .network file...")
>          networkconf = open (confFile, "w+") 
> @@ -116,7 +137,7 @@ class NetMan (dbus.service.Object):
>      @dbus.service.method(DBUS_NAME, "ssss", "x")
>      def DelAddress4 (self, device, ipaddr, netmask, gateway):
>          prefixLen = getPrefixLen (netmask)
> -        confFile = "/etc/systemd/network/10-bmc-" + device + ".network"
> +        confFile = "/etc/systemd/network/10-bmc-" + device + "-" + ipaddr + '_' + str(prefixLen) + ".network"
>          if not (os.path.exists(confFile)):
>              return 1
>  
> @@ -132,10 +153,16 @@ class NetMan (dbus.service.Object):
>      def GetHwAddress (self, device):
>          return self._getAddr ("mac", device)
>  
> -    @dbus.service.method(DBUS_NAME, "s", "i")
> -    def SetHwAddress (self, mac):
> -        rc = subprocess.call(["fw_setenv", "ethaddr", mac])
> -        return rc
> +    @dbus.service.method(DBUS_NAME, "ss", "s")
> +    def SetHwAddress (self, device, mac):
> +        netprov     = network_providers [self.provider]
> +        bus_name    = netprov ['bus_name']
> +        obj_path    = netprov ['hw_object_name']
> +        intf_name   = netprov ['hw_if_name']
> +
> +        obj = self.bus.get_object(bus_name, obj_path)
> +        intf = dbus.Interface(obj, intf_name)
> +        return intf.SetAddress (device, mac)
>  
>  def main():
>      dbus.mainloop.glib.DBusGMainLoop(set_as_default=True)
> @@ -149,4 +176,3 @@ def main():
>  
>  if __name__ == '__main__':
>      sys.exit(main())
> -
> -- 
> 2.6.4
>
>
> _______________________________________________
> openbmc mailing list
> openbmc at lists.ozlabs.org
> https://lists.ozlabs.org/listinfo/openbmc


More information about the openbmc mailing list