mirror of
https://github.com/openwrt/openwrt.git
synced 2024-12-20 14:13:16 +00:00
base-files: add functions to set or clear bit in MAC address
Some devices (e.g. Arduino Yun) need bitwise operations during MAC address setup. This commit adds generalized versions of macaddr_setbit_la(), which are helpful when manipulating a single bit in a MAC address. Signed-off-by: Sungbo Eo <mans0n@gorani.run>
This commit is contained in:
parent
b77fd0d30b
commit
7cfc880936
@ -152,10 +152,26 @@ macaddr_geteui() {
|
|||||||
echo ${mac:9:2}$sep${mac:12:2}$sep${mac:15:2}
|
echo ${mac:9:2}$sep${mac:12:2}$sep${mac:15:2}
|
||||||
}
|
}
|
||||||
|
|
||||||
macaddr_setbit_la() {
|
macaddr_setbit() {
|
||||||
local mac=$1
|
local mac=$1
|
||||||
|
local bit=${2:-0}
|
||||||
|
|
||||||
printf "%02x:%s" $((0x${mac%%:*} | 0x02)) ${mac#*:}
|
[ $bit -gt 0 -a $bit -le 48 ] || return
|
||||||
|
|
||||||
|
printf "%012x" $(( 0x${mac//:/} | 2**(48-bit) )) | sed -e 's/\(.\{2\}\)/\1:/g' -e 's/:$//'
|
||||||
|
}
|
||||||
|
|
||||||
|
macaddr_unsetbit() {
|
||||||
|
local mac=$1
|
||||||
|
local bit=${2:-0}
|
||||||
|
|
||||||
|
[ $bit -gt 0 -a $bit -le 48 ] || return
|
||||||
|
|
||||||
|
printf "%012x" $(( 0x${mac//:/} & ~(2**(48-bit)) )) | sed -e 's/\(.\{2\}\)/\1:/g' -e 's/:$//'
|
||||||
|
}
|
||||||
|
|
||||||
|
macaddr_setbit_la() {
|
||||||
|
macaddr_setbit $1 7
|
||||||
}
|
}
|
||||||
|
|
||||||
macaddr_2bin() {
|
macaddr_2bin() {
|
||||||
|
Loading…
Reference in New Issue
Block a user