]>
Commit | Line | Data |
---|---|---|
590cb657 MT |
1 | #!/bin/bash |
2 | ############################################################################### | |
3 | # # | |
4 | # IPFire.org - A linux based firewall # | |
5 | # Copyright (C) 2010 Michael Tremer & Christian Schmidt # | |
6 | # # | |
7 | # This program is free software: you can redistribute it and/or modify # | |
8 | # it under the terms of the GNU General Public License as published by # | |
9 | # the Free Software Foundation, either version 3 of the License, or # | |
10 | # (at your option) any later version. # | |
11 | # # | |
12 | # This program is distributed in the hope that it will be useful, # | |
13 | # but WITHOUT ANY WARRANTY; without even the implied warranty of # | |
14 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # | |
15 | # GNU General Public License for more details. # | |
16 | # # | |
17 | # You should have received a copy of the GNU General Public License # | |
18 | # along with this program. If not, see <http://www.gnu.org/licenses/>. # | |
19 | # # | |
20 | ############################################################################### | |
21 | ||
22 | PHY_DIR="/sys/class/ieee80211" | |
23 | ||
1c6a4e30 | 24 | phy_dir() { |
590cb657 MT |
25 | local phy=${1} |
26 | ||
27 | echo "${PHY_DIR}/${phy}" | |
28 | } | |
29 | ||
1c6a4e30 | 30 | phy_exists() { |
590cb657 MT |
31 | local phy=${1} |
32 | assert isset phy | |
33 | ||
34 | [ -d "$(phy_dir ${phy})" ] | |
35 | } | |
36 | ||
1c6a4e30 | 37 | phy_list() { |
590cb657 MT |
38 | local phy |
39 | ||
40 | for phy in $(phy_dir)/*; do | |
41 | [ -d "${phy}" ] || continue | |
42 | ||
43 | basename ${phy} | |
44 | done | |
45 | } | |
46 | ||
1c6a4e30 | 47 | phy_get() { |
4733a336 | 48 | local info="${1}" |
590cb657 MT |
49 | local phy |
50 | ||
4733a336 MT |
51 | # As this is already a valid phy, we don't need to search on... |
52 | if phy_exists "${info}"; then | |
53 | print "${info}" | |
54 | return ${EXIT_OK} | |
590cb657 MT |
55 | fi |
56 | ||
4733a336 MT |
57 | # If this is an existing device, we can figure out the name of the |
58 | # phy directly. | |
59 | if device_exists ${info}; then | |
60 | phy="$(device_get_phy ${info})" | |
61 | ||
62 | # If we just got the MAC address we need to walk though all | |
63 | # available phys and find the right one. | |
64 | elif mac_is_valid ${info}; then | |
590cb657 MT |
65 | local i |
66 | for i in $(phy_list); do | |
67 | if [ "${info}" = "$(phy_get_address ${i})" ]; then | |
68 | phy=${i} | |
69 | break | |
70 | fi | |
71 | done | |
72 | fi | |
73 | ||
31670741 MT |
74 | log DEBUG "Searching for phy = ${info}, found ${phy:-none}" |
75 | ||
590cb657 MT |
76 | if [ -z "${phy}" ]; then |
77 | return ${EXIT_ERROR} | |
78 | fi | |
79 | ||
80 | echo "${phy}" | |
81 | return ${EXIT_OK} | |
82 | } | |
83 | ||
1c6a4e30 | 84 | phy_get_address() { |
590cb657 MT |
85 | local phy=${1} |
86 | assert isset phy | |
87 | ||
88 | local path="$(phy_dir ${phy})/macaddress" | |
89 | [ -r "${path}" ] || return ${EXIT_ERROR} | |
90 | ||
91 | print "$(<${path})" | |
92 | } | |
b8026986 | 93 | |
1c6a4e30 | 94 | phy_get_devices() { |
b8026986 MT |
95 | local phy="${1}" |
96 | assert isset phy | |
97 | ||
98 | local device | |
f90dd58c | 99 | for device in $(devices_get_all); do |
b8026986 MT |
100 | local p="$(device_get_phy "${device}")" |
101 | ||
102 | if [ "${phy}" = "${p}" ]; then | |
103 | print "${device}" | |
104 | fi | |
105 | done | |
106 | } |