400-next-node 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. #!/usr/bin/lua
  2. local site = require 'gluon.site_config'
  3. local uci = require 'luci.model.uci'
  4. local ip = require 'luci.ip'
  5. local c = uci.cursor()
  6. c:delete('network', 'local_node_dev')
  7. c:section('network', 'device', 'local_node_dev',
  8. {
  9. name = 'local-node',
  10. ifname = 'br-client',
  11. type = 'macvlan',
  12. macaddr = site.next_node.mac,
  13. }
  14. )
  15. local ip4, netmask, ip6
  16. if site.next_node.ip4 then
  17. ip4 = site.next_node.ip4
  18. netmask = ip.IPv4(site.prefix4):mask():string()
  19. end
  20. if site.next_node.ip6 then
  21. ip6 = site.next_node.ip6 .. '/128'
  22. end
  23. c:delete('network', 'local_node')
  24. c:section('network', 'interface', 'local_node',
  25. {
  26. ifname = 'local-node',
  27. proto = 'static',
  28. ipaddr = ip4,
  29. netmask = netmask,
  30. ip6addr = ip6,
  31. }
  32. )
  33. c:delete('network', 'local_node_route6')
  34. c:section('network', 'route6', 'local_node_route6',
  35. {
  36. interface = 'client',
  37. target = site.prefix6,
  38. gateway = '::',
  39. }
  40. )
  41. c:save('network')
  42. c:delete('firewall', 'local_node')
  43. c:section('firewall', 'zone', 'local_node',
  44. {
  45. name = 'local_node',
  46. network = {'local_node'},
  47. input = 'ACCEPT',
  48. output = 'ACCEPT',
  49. forward = 'REJECT',
  50. }
  51. )
  52. c:save('firewall')