020-interfaces 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  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'
  10. local fs = require 'nixio.fs'
  11. local uci = require('simple-uci').cursor()
  12. local function iface_exists(ifaces)
  13. if not ifaces then return nil end
  14. for iface in ifaces:gmatch('%S+') do
  15. if fs.access('/sys/class/net/' .. iface:gsub('%..*$', '')) then
  16. return ifaces
  17. end
  18. end
  19. end
  20. local lan_ifname = iface_exists(uci:get('network', 'lan', 'ifname'))
  21. local wan_ifname = iface_exists(uci:get('network', 'wan', 'ifname'))
  22. if platform.match('ar71xx', 'generic', {
  23. 'cpe210',
  24. 'cpe510',
  25. 'wbs210',
  26. 'wbs510',
  27. 'airgateway',
  28. 'nanostation-m',
  29. 'nanostation-m-xw',
  30. 'unifi-outdoor-plus',
  31. 'uap-pro',
  32. 'unifiac-pro',
  33. }) then
  34. lan_ifname, wan_ifname = wan_ifname, lan_ifname
  35. end
  36. if wan_ifname and lan_ifname then
  37. sysconfig.wan_ifname = wan_ifname
  38. sysconfig.lan_ifname = lan_ifname
  39. else
  40. local single_ifname = lan_ifname or wan_ifname
  41. if site.single_as_lan(false) then
  42. sysconfig.lan_ifname = single_ifname
  43. else
  44. sysconfig.wan_ifname = single_ifname
  45. end
  46. end
  47. uci:delete('network', 'lan')
  48. uci:delete('network', 'wan')
  49. uci:save('network')