010-primary-mac 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. #!/usr/bin/lua
  2. local sysconfig = require 'gluon.sysconfig'
  3. if sysconfig.primary_mac then
  4. os.exit(0)
  5. end
  6. local platform = require 'gluon.platform'
  7. local fs = require 'nixio.fs'
  8. local util = require 'luci.util'
  9. local try_files = {
  10. '/sys/class/net/eth0/address'
  11. }
  12. if not (
  13. util.contains({'x86', 'brcm2708'}, platform.get_target()) or
  14. platform.match('ar71xx', 'mikrotik')
  15. ) then
  16. table.insert(try_files, 1, '/sys/class/ieee80211/phy0/macaddress')
  17. end
  18. if platform.match('ar71xx', 'generic', {'tl-wdr3600', 'tl-wdr4300'}) then
  19. table.insert(try_files, 1, '/sys/class/ieee80211/phy1/macaddress')
  20. elseif platform.match('ramips', 'mt7621', {'dir-860l-b1'}) then
  21. table.insert(try_files, 1, '/sys/class/ieee80211/phy1/macaddress')
  22. elseif platform.match('ar71xx', 'generic', {'unifi-outdoor-plus', 'carambola2',
  23. 'mr600', 'mr600v2',
  24. 'mr900', 'mr900v2',
  25. 'mr1750', 'mr1750v2',
  26. 'om2p', 'om2pv2',
  27. 'om2p-hs', 'om2p-hsv2', 'om2p-hsv3',
  28. 'om2p-lc',
  29. 'om5p', 'om5p-an',
  30. 'om5p-ac', 'om5p-acv2'}) then
  31. table.insert(try_files, 1, '/sys/class/net/eth0/address')
  32. elseif platform.match('ar71xx', 'generic', {'archer-c5', 'archer-c7'}) then
  33. table.insert(try_files, 1, '/sys/class/net/eth1/address')
  34. end
  35. for _, file in ipairs(try_files) do
  36. local addr = fs.readfile(file)
  37. if addr then
  38. sysconfig.primary_mac = util.trim(addr)
  39. break
  40. end
  41. end