310-gluon-client-bridge-local-node 1012 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. #!/usr/bin/lua
  2. local client_bridge = require 'gluon.client_bridge'
  3. local site = require 'gluon.site_config'
  4. local sysconfig = require 'gluon.sysconfig'
  5. local uci = require('simple-uci').cursor()
  6. local next_node = site.next_node or {}
  7. uci:delete('network', 'local_node_dev')
  8. uci:section('network', 'device', 'local_node_dev', {
  9. type = 'veth',
  10. name = 'local-node',
  11. macaddr = client_bridge.next_node_macaddr(),
  12. peer_name = 'local-port',
  13. peer_macaddr = sysconfig.primary_mac,
  14. })
  15. local ip4, ip6
  16. if next_node.ip4 then
  17. local plen = site.prefix4:match('/%d+$')
  18. ip4 = next_node.ip4 .. plen
  19. end
  20. if next_node.ip6 then
  21. ip6 = next_node.ip6 .. '/128'
  22. end
  23. uci:delete('network', 'local_node')
  24. uci:section('network', 'interface', 'local_node', {
  25. ifname = 'local-node',
  26. proto = 'static',
  27. ipaddr = ip4,
  28. ip6addr = ip6,
  29. ip6deprecated = true,
  30. })
  31. uci:save('network')
  32. uci:delete('dhcp', 'local_node')
  33. uci:section('dhcp', 'dhcp', 'local_node', {
  34. interface = 'local_node',
  35. ignore = true,
  36. })
  37. uci:save('dhcp')