020-interfaces 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. #!/usr/bin/lua
  2. local sysconfig = require 'gluon.sysconfig'
  3. -- Are we already set up?
  4. if sysconfig.lan_ifname or sysconfig.wan_ifname then
  5. os.exit(0)
  6. end
  7. local util = require 'gluon.util'
  8. local platform = require 'gluon.platform'
  9. local site = require 'gluon.site_config'
  10. local uci = require('simple-uci').cursor()
  11. local function iface_exists(ifaces)
  12. if not ifaces then return nil end
  13. for iface in ifaces:gmatch('%S+') do
  14. if util.exec('ip', 'link', 'show', 'dev', (iface:gsub('%..*$', ''))) == 0 then
  15. return ifaces
  16. end
  17. end
  18. end
  19. local lan_ifname = iface_exists(uci:get('network', 'lan', 'ifname'))
  20. local wan_ifname = iface_exists(uci:get('network', 'wan', 'ifname'))
  21. if platform.match('ar71xx', 'generic', {
  22. 'cpe210',
  23. 'cpe510',
  24. 'wbs210',
  25. 'wbs510',
  26. 'airgateway',
  27. 'nanostation-m',
  28. 'nanostation-m-xw',
  29. 'unifi-outdoor-plus',
  30. 'uap-pro',
  31. 'unifiac-pro',
  32. }) then
  33. lan_ifname, wan_ifname = wan_ifname, lan_ifname
  34. end
  35. if wan_ifname and lan_ifname then
  36. sysconfig.wan_ifname = wan_ifname
  37. sysconfig.lan_ifname = lan_ifname
  38. else
  39. local single_ifname = lan_ifname or wan_ifname
  40. if site.single_as_lan then
  41. sysconfig.lan_ifname = single_ifname
  42. else
  43. sysconfig.wan_ifname = single_ifname
  44. end
  45. end
  46. uci:delete('network', 'lan')
  47. uci:delete('network', 'wan')
  48. uci:save('network')