# Network Management ## Overview A Network Manager is a daemon which handles network management operations. It must implement the `xyz.openbmc_project.Network.SystemConfiguration.interface` and `org.freedesktop.DBus.ObjectManager`. When the network manager daemon comes up, it should create objects implementing physical link/virtual interfaces such as `xyz.openbmc_project.Network.EthernetInterface` or `xyz.openbmc_project.Network.VLANInterface` on the system. IP address(v4 and v6) objects must be children objects of the physical/virtual interface object. ## Interfaces 1. SystemConfiguration: This describes the system-specific parameters. 2. EthernetInterface: This describes the interface-specific parameters. 3. IP: This describes the IP address-specific parameters. 4. IPProtocol: This describes the IP protocol type (IPv4/IPv6). 5. VLANInterface: This describes the VLAN-specific properties. 6. Bond: This describes the interface bonding parameters. ## DbusObjects ### Interface Objects Interface objects can be physical as well as virtual. If the object is a physical interface, it can't be deleted, but if it is a virtual interface object it can be deleted. Example: `/xyz/openbmc_project/network/eth0` ### IPAddress Objects There can be multiple IP address objects under an interface object. These objects can be deleted by the delete function. IPv4 objects will have the following D-Bus object path. Example: `/xyz/openbmc_project/network/eth0/ipv4/3fd41d13/` IPv6 objects will have the following D-Bus object path. Example: `/xyz/openbmc_project/network/eth0/ipv6/5dfghilp/` ### Conf Object This object will have the system configuration related parameters. Example: `/xyz/openbmc_project/network/conf` ## UseCases ### Configure IP address ```sh busctl call xyz.openbmc_project.Network /xyz/openbmc_project/network/ xyz.openbmc_project.Network.IP.Create IP ssys "xyz.openbmc_project.Network.IP.Protocol.IPv4" "" "" curl -c cjar -b cjar -k -H "Content-Type: application/json" -X POST -d '{"data":["xyz.openbmc_project.Network.IP.Protocol.IPv4","",,""] }' https:///xyz/openbmc_project/network/eth0/action/IP ``` ### Configure Default Gateway #### Get ```sh busctl get-property xyz.openbmc_project.Network /xyz/openbmc_project/network/config xyz.openbmc_project.Network.SystemConfiguration DefaultGateway curl -c cjar -b cjar -k -H "Content-Type: application/json" -X GET https:///xyz/openbmc_project/network/config/attr/DefaultGateway ``` #### Set ```sh busctl set-property xyz.openbmc_project.Network /xyz/openbmc_project/network/config xyz.openbmc_project.Network.SystemConfiguration DefaultGateway s "" curl -c cjar -b cjar -k -H "Content-Type: application/json" -X PUT -d '{"data": "x.x.x.x"}' https:///xyz/openbmc_project/network/config/attr/DefaultGateway ``` NOTE: Since the system does not allow unpingable gateway address, make sure the gateway address is pingable. ### Configure HostName #### Get ```sh busctl get-property xyz.openbmc_project.Network /xyz/openbmc_project/network/config xyz.openbmc_project.Network.SystemConfiguration HostName curl -c cjar -b cjar -k -H "Content-Type: application/json" -X GET https:///xyz/openbmc_project/network/config/attr/HostName ``` #### Set ```sh busctl set-property xyz.openbmc_project.Network /xyz/openbmc_project/network/config xyz.openbmc_project.Network.SystemConfiguration HostName s "" curl -c cjar -b cjar -k -H "Content-Type: application/json" -X PUT -d '{"data": ""}' https:///xyz/openbmc_project/network/config/attr/HostName ``` ### Delete IP address ```sh busctl call xyz.openbmc_project.Network /xyz/openbmc_project/network//ipv4/ xyz.openbmc_project.Object.Delete Delete ``` NOTE: How to get the ipv4/id: After creating the IP address object enumerate the network interface object. ```sh curl -c cjar -b cjar -k -H "Content-Type: application/json" -X DELETE https:///xyz/openbmc_project/network/eth0/ipv4/fbfc29b ``` ### Configure DHCP #### Get ```sh busctl get-property xyz.openbmc_project.Network /xyz/openbmc_project/network/eth0 xyz.openbmc_project.Network.EthernetInterface DHCPEnabled curl -c cjar -b cjar -k -H "Content-Type: application/json" -X GET https:///xyz/openbmc_project/network/eth0/attr/DHCPEnabled ``` #### Set ```sh busctl set-property xyz.openbmc_project.Network /xyz/openbmc_project/network/eth0 xyz.openbmc_project.Network.EthernetInterface DHCPEnabled b 1 curl -c cjar -b cjar -k -H "Content-Type: application/json" -X PUT -d '{"data": 1}' https:///xyz/openbmc_project/network/eth0/attr/DHCPEnabled ``` ### Configure MACAddress #### Get ```sh busctl get-property xyz.openbmc_project.Network /xyz/openbmc_project/network/eth0 xyz.openbmc_project.Network.MACAddress MACAddress curl -c cjar -b cjar -k -H "Content-Type: application/json" -X GET https:///xyz/openbmc_project/network/eth0/attr/MACAddress ``` #### Set NOTE: MAC address should be LOCAL ADMIN MAC (2nd bit of first byte should be on). ```sh busctl set-property xyz.openbmc_project.Network /xyz/openbmc_project/network/eth0 xyz.openbmc_project.Network.MACAddress MACAddress s "XX:XX:XX:XX:XX:XX" curl -c cjar -b cjar -k -H "Content-Type: application/jon" -X PUT -d '{"data": "XX:XX:XX:XX:XX:XX" }' https:///xyz/openbmc_project/network/eth0/attr/MACAddress ``` ### Network factory reset ```sh busctl call xyz.openbmc_project.Network /xyz/openbmc_project/network xyz.openbmc_project.Common.FactoryReset Reset curl -c cjar -b cjar -k -H "Content-Type: application/json" -X POST -d '{"data":[] }' https:///xyz/openbmc_project/network/action/Reset ``` ### VLAN #### Create ```sh curl -c cjar -b cjar -k -H "Content-Type: application/json" -X POST -d '{"data":["eth0",50] }' https:///xyz/openbmc_project/network/action/VLAN ``` #### Delete ```sh curl -c cjar -b cjar -k -H "Content-Type: application/json" -X DELETE https:///xyz/openbmc_project/network/eth0_50 busctl call xyz.openbmc_project.Network /xyz/openbmc_project/network/eth0_50 xyz.openbmc_project.Object.Delete Delete ``` #### Enumerate ```sh curl -c cjar -b cjar -k -H "Content-Type: application/json" -X GET https:///xyz/openbmc_project/network/eth0_50/enumerate ``` #### Configure IP on VLAN Interface Please refer to the "Configure IP address" section.