summaryrefslogtreecommitdiffstats
path: root/aconf/modules/network.lua
diff options
context:
space:
mode:
Diffstat (limited to 'aconf/modules/network.lua')
-rw-r--r--aconf/modules/network.lua41
1 files changed, 26 insertions, 15 deletions
diff --git a/aconf/modules/network.lua b/aconf/modules/network.lua
index 17e0127..05d8576 100644
--- a/aconf/modules/network.lua
+++ b/aconf/modules/network.lua
@@ -13,7 +13,7 @@ Host.address = M.net.IPAddress{required=true, addr='ipaddr'}
Host.canonical = M.String{required=true, ui_name='Canonical name'}
Host.alias = M.Set{
type=M.String,
- addr='alias/#',
+ be_mode=M.addr.special.enum_keys,
ui_name='Aliases',
ui_member='Alias',
detail=false
@@ -21,10 +21,16 @@ Host.alias = M.Set{
local Resolv = M.new()
Resolv.servers = M.List{
- type=M.net.IPAddress, addr='nameserver/#', widget='inline'
+ type=M.net.IPAddress,
+ addr='nameserver',
+ be_mode=M.addr.special.enum_keys,
+ widget='inline'
}
Resolv.search_domains = M.List{
- type=M.String, addr='search/domain/#', widget='inline'
+ type=M.String,
+ addr='search/domain',
+ be_mode=M.addr.special.enum_keys,
+ widget='inline'
}
@@ -177,13 +183,13 @@ Interface.slaves = M.Set{
condition={type='bond'},
type=M.Reference{scope='../..', filter={status='detached'}},
required=true,
- addr='@family/link/@method/none/bond-slaves'
+ addr='link/none/bond-slaves'
}
Interface.ports = M.Set{
condition={type='bridge'},
type=M.Reference{scope='../..', filter={status='detached'}},
required=true,
- addr='@family/link/@method/none/bridge-ports'
+ addr='link/none/bridge-ports'
}
-- TODO do not allow VLAN creation for non-existent interfaces
Interface.trunk = M.Reference{
@@ -195,7 +201,7 @@ Interface.trunk = M.Reference{
required=true,
scope='..',
filter={status={'detached', 'configured'}},
- addr='@family/link/@method/none/vlan-raw-device'
+ addr='link/none/vlan-raw-device'
}
-- TODO ensure that (trunk, tag) is unique
Interface.vlan_tag = M.Integer{
@@ -204,7 +210,7 @@ Interface.vlan_tag = M.Integer{
required=true,
min=0,
max=4095,
- addr='@family/link/@method/none/vlan-id',
+ addr='link/none/vlan-id',
ui_name='VLAN tag'
}
@@ -212,7 +218,7 @@ Interface.ipv4 = M.Model{
model=IPv4,
condition={status={'detached', 'configured'}},
create=true,
- addr='@family/inet',
+ addr='inet',
ui_name='IPv4 configuration',
widget='inline'
}
@@ -220,7 +226,7 @@ Interface.ipv6 = M.Model{
model=IPv6,
condition={status={'detached', 'configured'}},
create=true,
- addr='@family/inet6',
+ addr='inet6',
ui_name='IPv6 configuration',
widget='inline'
}
@@ -247,15 +253,20 @@ Net.resolver = M.Model{
}
Net.enabled_ifaces = M.Set{
- type=M.Reference{
- scope='../interfaces',
- addr=iface_aug_addr..'/auto/#/*/*',
- on_delete='set-null'
- },
+ type=M.Reference{scope='../interfaces', addr='*/*', on_delete='set-null'},
+ addr=iface_aug_addr..'/auto',
+ be_mode=M.addr.special.enum_keys,
visible=false
}
Net.interfaces = M.Collection{
- type=Interface, addr=iface_aug_addr..'/iface/@', widget='inline'
+ type=Interface,
+ addr=iface_aug_addr..'/iface',
+ be_mode={
+ ['.']=M.addr.special.value_equals(),
+ ['*']=M.addr.special.value_equals('family'),
+ ['*/link']=M.addr.special.value_equals('method')
+ },
+ widget='inline'
}
M.register('net', Net, {ui_name='Network'})