system-network¶
Manage network configuration.
read¶
Input¶
It takes a mandatory action argument.
Valid actions are:
listheirsavailablebond-typesvlan-availableroutinginfo
list¶
It takes only the action argument.
Example:
{
"action": "list"
}
heirs¶
It takes action and parent arguments.
The parent contains the name of the interface which will be deleted.
Example:
{
"action": "heirs",
"parent": "br0"
}
available¶
List all interfaces without a role.
Example:
{
"action": "available"
}
bond-types¶
List the available bond types.
Example:
{
"action": "bond-types"
}
vlan-available¶
List all interfaces suitable for a vlan.
Example:
{
"action": "vlan-availables"
}
routing¶
List routing table (route -n)
Example:
{
"action": "routing"
}
info¶
Retrieve info from ifconfig.co.
The name field contains the name of the interface to use.
Example:
{
"action": "info",
"name": "eth0"
}
Output¶
list¶
Inside the configuration field return a list of all network interfaces.
The status field contain current network status; if a newtork interface is configured with DHCP,
the current address is contained inside the ipaddr field.
Example:
{
"status": {
"enp0s8": {
"link": "1",
"bus": "pci",
"speed": "1000",
"model": "Intel Corporation 82540EM Gigabit Ethernet Controller (rev 02)",
"mac": "08:00:27:8e:01:18",
"driver": "e1000"
},
"enp0s9": {
"link": "1",
"bus": "pci",
"speed": "1000",
"model": "Intel Corporation 82540EM Gigabit Ethernet Controller (rev 02)",
"mac": "08:00:27:3d:b1:2b",
"driver": "e1000"
},
},
"configuration": {
"green": [
{
"bootproto": "none",
"gateway": "",
"BondOptMode": "2",
"name": "bond0",
"devices": [
{
"link": "1",
"bootproto": "none",
"bus": "pci",
"existing": 1,
"master": "bond0",
"model": "Intel Corporation 82540EM Gigabit Ethernet Controller (rev 02)",
"name": "enp0s8",
"virtual": 0,
"speed": "1000",
"type": "ethernet",
"mac": "08:00:27:bd:3d:37",
"role": "slave",
"driver": "e1000"
},
{
"link": "1",
"bootproto": "none",
"bus": "pci",
"existing": 1,
"master": "bond0",
"model": "Advanced Micro Devices Inc. [AMD] 79c970 [PCnet32 LANCE] (rev 10)",
"name": "enp0s9",
"virtual": 0,
"speed": "",
"type": "ethernet",
"mac": "08:00:27:36:f0:08",
"role": "slave",
"driver": "pcnet32"
}
],
"virtual": 1,
"aliases": [],
"type": "bond",
"netmask": "255.255.255.0",
"role": "green",
"ipaddr": "192.168.4.246",
"nslabel": "MyMightyGreen"
},
{
"bootproto": "none",
"gateway": "192.168.5.253",
"name": "br0",
"devices": [
{
"link": "1",
"bootproto": "none",
"bus": "pci",
"existing": 1,
"model": "Intel Corporation 82540EM Gigabit Ethernet Controller (rev 02)",
"name": "enp0s3",
"bridge": "br0",
"virtual": 0,
"speed": "1000",
"type": "ethernet",
"mac": "08:00:27:8e:01:18",
"role": "bridged",
"driver": "e1000"
}
],
"virtual": 1,
"aliases": [],
"type": "bridge",
"netmask": "255.255.255.0",
"role": "green",
"ipaddr": "192.168.5.246",
"cidr": "192.168.5.246/24"
}
],
"free": [],
"blue": [
{
"parent": "enp0s8",
"bootproto": "none",
"gateway": "",
"name": "enp0s8.2",
"devices": [],
"virtual": 1,
"aliases": [],
"type": "vlan",
"netmask": "255.255.255.0",
"tag": "2",
"role": "blue",
"ipaddr": "11.12.13.246"
}
],
"other": [],
"pppoe": 0,
"orange": [],
"missing": [],
"red": [
{
"provider": "xDSL provider",
"AuthType": "auto",
"FwOutBandwidth": "",
"name": "ppp0",
"FwInBandwidth": "",
"devices": [
{
"link": "1",
"bus": "pci",
"existing": 1,
"model": "Intel Corporation 82540EM Gigabit Ethernet Controller (rev 02)",
"name": "enp0s8",
"devices": [],
"virtual": 0,
"speed": "1000",
"aliases": [],
"type": "ethernet",
"mac": "08:00:27:bd:3d:37",
"role": "pppoe",
"driver": "e1000"
}
],
"virtual": 1,
"Password": "pass2",
"aliases": [],
"user": "user1",
"type": "xdsl",
"role": "red"
}
]
}
}
Special fields:
devices: if the interface is a bridge or a bond, contains the list of connected devicesaliases: contains the list of alias devicesexisting: set to 1 if the device is physical and it's attacched to the system, 0 otherwisevirtual: set to 1 if the device is a virtual network interface like bridge, bond, etcpppoe: set to 1 if there is a pppoe already configured, 0 otherwise
heirs¶
List of interfaces suitable for getting a new role.
Example:
[
"enp0s3",
"enp0s4"
]
available¶
List of interfaces wihout a role.
Example:
[
"enp0s8",
"enp0s9"
]
bond-types¶
Example:
[
{
"value": 3,
"name": "broadcast"
},
{
"value": 6,
"name": "balance-alb"
},
{
"value": 5,
"name": "balance-tlb"
},
{
"value": 1,
"name": "active-backup"
},
{
"value": 0,
"name": "balance-rr"
},
{
"value": 4,
"name": "802.3ad"
},
{
"value": 2,
"name": "balance-xor"
}
]
vlan-available¶
Example:
[
"bond0",
"br0",
"enp0s3",
"enp0s8",
"enp0s9"
]
routing¶
Example:
{
"data": "Kernel IP routing table\nDestination Gateway Genmask Flags Metric Ref Use Iface\n0.0.0.0 192.168.5.253 0.0.0.0 UG 0 0 0 br0\n169.254.0.0 0.0.0.0 255.255.0.0 U 1010 0 0 br0\n192.168.5.0 0.0.0.0 255.255.255.0 U 0 0 0 br0\n"
}
info¶
Example:
{
"country": "Italy",
"longitude": 12.8835,
"ip": "80.17.99.73",
"hostname": "nethsecurity.nethesis.it",
"country_eu": true,
"ip_decimal": 1343316809,
"city": "Cartoceto",
"country_iso": "IT",
"latitude": 43.7657
}
validate¶
Constraints¶
The request must contain an action field. Valid actions are:
create-aliascreate-bridgecreate-bondcreate-vlanset-pppoerelease-rolechange-properties
Constraints for create-alias
- ipaddr: must be a valid IPv5 address
- netmask: must be a valid IPv4 network mask
- parent: must be the name of an existing network interface
Constraints for create-bridge
- devices: a list of non-configured interface names
- role: can be empty or
green,red,blue,orange - bootproto: must be
nonefor blue and orange roles, can be alsodhcpfor red role - ipaddr: if bootproto is static, must be a free IPv4 address (also checked agains nsdc IP)
- netmask: if bootproto is static, must be an IPv4 netmask
- gateway: if bootproto is static, can be empty or an IPv4 address
Constraints for create-bond
- BondOptMode: can be a value between 0 and 6
- devices: a list of non-configured interface names
- role: can be empty or
green,red,blue,orange - bootproto: must be
nonefor blue and orange roles, can be alsodhcpfor red role - ipaddr: if bootproto is static, must be a free IPv4 address (also checked agains nsdc IP)
- netmask: if bootproto is static, must be an IPv4 netmask
- gateway: if bootproto is static, can be empty or an IPv4 address
Constraints for create-vlan
- tag: a positive integer
- parent: the name of an existing network interface, can't be another vlan
- role: can be empty or
green,red,blue,orange - bootproto: must be
nonefor blue and orange roles, can be alsodhcpfor red role - ipaddr: if bootproto is static, must be a free IPv4 address (also checked agains nsdc IP)
- netmask: if bootproto is static, must be an IPv4 netmask
- gateway: if bootproto is static, can be empty or an IPv4 address
Constraints for set-pppoe
- AuthType: can be
auto,paporchap - parent: the name of an existing network interface
Constraints for release-role
- interface: must be the name of an existing network interface
- the role can't be released if it is the last green interface
Constraints for release-device
- interface: must be the name of an existing network enslaved or bonded interface
Constraints for change-properties
- interface: the name of an existing network interface
- role: can be empty or
green,red,blue,orange - bootproto: must be
nonefor blue and orange roles, can be alsodhcpfor red role - ipaddr: if bootproto is static, must be a free IPv4 address (also checked agains nsdc IP)
- netmask: if bootproto is static, must be an IPv4 netmask
- gateway: if bootproto is static, can be empty or an IPv4 address
- devices: if the interface is a bond or a bridge, a list of existing free interfaces
Input¶
create-alias¶
Example:
{
"action": "create-alias",
"ipaddr": "192.168.1.246",
"netmask": "255.255.255.0",
"parent": "br0"
}
create-bridge¶
Example:
{
"action": "create-bridge",
"role": "green",
"bootproto": "none",
"ipaddr": "192.168.1.246",
"netmask": "255.255.255.0",
"gateway": "192.168.1.1",
"devices": [
"enp0s9",
"enp0s8"
]
}
create-bond¶
Example:
{
"action": "create-bond",
"role": "green",
"bootproto": "none",
"ipaddr": "192.168.3.246",
"netmask": "255.255.255.0",
"gateway": "192.168.1.1",
"BondOptMode": 0,
"devices": [
"enp0s9",
"enp0s8"
]
}
create-vlan¶
Example:
{
"action": "create-vlan",
"tag": 1,
"role": "green",
"bootproto": "none",
"ipaddr": "192.168.2.246",
"netmask": "255.255.255.0",
"parent": "enp0s9"
}
set-pppoe¶
Example:
{
"action": "set-pppoe",
"parent": "enp0s8",
"AuthType": "auto",
"Password": "mypass",
"user": "myuser",
"provider": "xDSL provider"
}
release-role¶
Example:
{
"action": "release-role",
"interface": "enp0s8"
}
release-device¶
Example:
{
"action": "release-device",
"interface": "enp0s9"
}
change-properties¶
The devices field is mandatory only for bridges and bonding.
The BondOptMode is mandatory only for bonding;
Example:
{
"action": "change-properties",
"role": "blue",
"bootproto": "none",
"interface": "br1",
"ipaddr": "192.168.1.246",
"netmask": "255.255.255.0",
'nslabel': "MyGuests"
"BondOptMode": 0,
"devices": [
"enp0s9"
]
}
update¶
release-role¶
Use the same input from validate.
release-device¶
Use the same input from validate.
change-properties¶
Use the same input from validate.
set-pppoe¶
Use the same input from validate.
unset-pppoe¶
Input example:
{
"action": "unset-pppoe"
}
create¶
create-alias¶
Use the same input from validate.
create-bridge¶
Use the same input from validate.
delete¶
Delete the interface specified inside the interface field.
If heir field is set, copy all configuration from the bridge to heir interface.
Input example:
{
"heir": "enp0s8",
"interface": "br1"
}