bundles/wide-dhcp6c: introduce, add to home.router
This commit is contained in:
parent
6b4eae842b
commit
fa224a9939
7 changed files with 132 additions and 0 deletions
17
bundles/wide-dhcp6c/files/dhcp6c.conf
Normal file
17
bundles/wide-dhcp6c/files/dhcp6c.conf
Normal file
|
@ -0,0 +1,17 @@
|
|||
interface ${source} {
|
||||
send ia-pd 0;
|
||||
};
|
||||
|
||||
id-assoc pd 0 {
|
||||
% for iface, subnet_id in sorted(targets.items()):
|
||||
prefix-interface ${iface} {
|
||||
sla-len ${subnet_len};
|
||||
sla-id ${subnet_id};
|
||||
ifid ${subnet_id};
|
||||
};
|
||||
% endfor
|
||||
};
|
||||
|
||||
profile default {
|
||||
information-only;
|
||||
};
|
10
bundles/wide-dhcp6c/files/ip-down
Normal file
10
bundles/wide-dhcp6c/files/ip-down
Normal file
|
@ -0,0 +1,10 @@
|
|||
#!/bin/bash
|
||||
|
||||
systemctl stop wide-dhcpv6-client
|
||||
|
||||
% for interface, subnet_id in sorted(targets.items()):
|
||||
for IP in $(ip -6 addr show dev ${interface} | grep inet6 | awk '{print $2}' | grep -vF 'fe80::')
|
||||
do
|
||||
ip -6 addr del $IP dev ${interface}
|
||||
done
|
||||
% endfor
|
11
bundles/wide-dhcp6c/files/ip-up
Normal file
11
bundles/wide-dhcp6c/files/ip-up
Normal file
|
@ -0,0 +1,11 @@
|
|||
#!/bin/bash
|
||||
|
||||
INTERFACE=$1
|
||||
|
||||
if [[ "$INTERFACE" != "${source}" ]]
|
||||
then
|
||||
echo "wide-dhcp6c is not configured to work on $INTERFACE"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
systemctl start wide-dhcpv6-client
|
10
bundles/wide-dhcp6c/files/wide-dhcpv6-client.service
Normal file
10
bundles/wide-dhcp6c/files/wide-dhcpv6-client.service
Normal file
|
@ -0,0 +1,10 @@
|
|||
[Unit]
|
||||
Description=WIDE-DHCPv6-Client
|
||||
After=network-online.target
|
||||
|
||||
[Service]
|
||||
PIDFile=/run/dhcp6c.pid
|
||||
ExecStart=/usr/sbin/dhcp6c -c /etc/wide-dhcpv6/dhcp6c.conf -p /run/dhcp6c.pid -f ${source}
|
||||
|
||||
[Install]
|
||||
WantedBy=default.target
|
58
bundles/wide-dhcp6c/items.py
Normal file
58
bundles/wide-dhcp6c/items.py
Normal file
|
@ -0,0 +1,58 @@
|
|||
if node.metadata.get('wide-dhcp6c', {}).get('integrate-with-pppd', False):
|
||||
files['/etc/ppp/ip-up.d/wide-dhcp6c'] = {
|
||||
'source': 'ip-up',
|
||||
'content_type': 'mako',
|
||||
'context': {
|
||||
'source': node.metadata['wide-dhcp6c']['source'],
|
||||
},
|
||||
'mode': '0755',
|
||||
}
|
||||
files['/etc/ppp/ip-down.d/wide-dhcp6c'] = {
|
||||
'source': 'ip-down',
|
||||
'content_type': 'mako',
|
||||
'context': {
|
||||
'targets': node.metadata['wide-dhcp6c']['targets'],
|
||||
},
|
||||
'mode': '0755',
|
||||
}
|
||||
|
||||
# Will be started and stopped by pppd.
|
||||
should_be_running = None
|
||||
should_be_enabled = False
|
||||
else:
|
||||
should_be_running = True
|
||||
should_be_enabled = True
|
||||
|
||||
files['/etc/wide-dhcpv6/dhcp6c.conf'] = {
|
||||
'content_type': 'mako',
|
||||
'context': {
|
||||
'source': node.metadata['wide-dhcp6c']['source'],
|
||||
'targets': node.metadata['wide-dhcp6c']['targets'],
|
||||
'subnet_len': node.metadata['wide-dhcp6c']['subnet_len'],
|
||||
},
|
||||
'triggers': {
|
||||
'svc_systemd:wide-dhcpv6-client:restart',
|
||||
},
|
||||
}
|
||||
|
||||
files['/etc/systemd/system/wide-dhcpv6-client.service'] = {
|
||||
'content_type': 'mako',
|
||||
'context': {
|
||||
'source': node.metadata['wide-dhcp6c']['source'],
|
||||
},
|
||||
'triggers': {
|
||||
'action:systemd-reload',
|
||||
'svc_systemd:wide-dhcpv6-client:restart',
|
||||
},
|
||||
}
|
||||
|
||||
svc_systemd = {
|
||||
'wide-dhcpv6-client': {
|
||||
'running': should_be_running,
|
||||
'enabled': should_be_enabled,
|
||||
'needs': {
|
||||
'file:/etc/systemd/system/wide-dhcpv6-client.service',
|
||||
'file:/etc/wide-dhcpv6/dhcp6c.conf',
|
||||
},
|
||||
},
|
||||
}
|
18
bundles/wide-dhcp6c/metadata.py
Normal file
18
bundles/wide-dhcp6c/metadata.py
Normal file
|
@ -0,0 +1,18 @@
|
|||
defaults = {
|
||||
'apt': {
|
||||
'packages': {
|
||||
'wide-dhcpv6-client': {},
|
||||
},
|
||||
},
|
||||
'iptables': {
|
||||
'bundle_rules': {
|
||||
'wide-dhcp6c': [
|
||||
'ip6tables -A INPUT -p udp -s ff00::/12 -j ACCEPT',
|
||||
'ip6tables -A INPUT -p udp -s fe80::/10 -j ACCEPT',
|
||||
],
|
||||
},
|
||||
},
|
||||
'wide-dhcp6c': {
|
||||
'subnet_len': '8',
|
||||
},
|
||||
}
|
|
@ -6,6 +6,7 @@ nodes['home.router'] = {
|
|||
'iptables',
|
||||
'pppd',
|
||||
'dhcpd',
|
||||
'wide-dhcp6c',
|
||||
},
|
||||
'groups': set(),
|
||||
'metadata': {
|
||||
|
@ -74,6 +75,13 @@ nodes['home.router'] = {
|
|||
'cpu': 2,
|
||||
'ram': 2,
|
||||
},
|
||||
'wide-dhcp6c': {
|
||||
'integrate-with-pppd': True,
|
||||
'source': 'ppp0',
|
||||
'targets': {
|
||||
'enp1s0.42': '1',
|
||||
},
|
||||
},
|
||||
},
|
||||
'os': 'debian',
|
||||
'os_version': (10,),
|
||||
|
|
Loading…
Reference in a new issue