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

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. #!/usr/bin/lua
  2. local client_bridge = require 'gluon.client_bridge'
  3. local site = require 'gluon.site'
  4. local sysconfig = require 'gluon.sysconfig'
  5. local uci = require('simple-uci').cursor()
  6. local next_node = site.next_node({})
  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. ip4 = next_node.ip4 .. '/32'
  18. end
  19. if next_node.ip6 then
  20. ip6 = next_node.ip6 .. '/128'
  21. end
  22. uci:delete('network', 'local_node')
  23. uci:section('network', 'interface', 'local_node', {
  24. ifname = 'local-node',
  25. proto = 'static',
  26. ipaddr = ip4,
  27. ip6addr = ip6,
  28. ip6deprecated = true,
  29. })
  30. uci:save('network')
  31. uci:delete('dhcp', 'local_node')
  32. uci:section('dhcp', 'dhcp', 'local_node', {
  33. interface = 'local_node',
  34. ignore = true,
  35. })
  36. uci:save('dhcp')