USB の LAN アダプタを複数挿すとどれが ue0 でどれが ue1 で ue2 なのかわかったもんじゃなくなる
Linux とかだと HWaddr で固定みたいなの結構あったと思うんだけど
FreeBSD だとそれっぽいのが見当たらない。
もしかしたらそんな設定できるようになってないのかもしれない
なので、とりあえずちょっと精度が粗くてデータとロジックが一緒くたになっているが
基本的なアイディアとしては割と単純な事だと実証してみる
#!/bin/sh fix_ifname_by_etheraddr() { _ifn_list="`ifconfig -l`" [ -z "$_ifn_list" ] && return 0 for _if in ${_ifn_list} ; do _ifethaddr="`ifconfig $_if | sed 's/^.*ether[ ]\{1,\}\([0-9a-f:]\{17\}\).*$/\1/' | egrep '^[0-9a-f:]{17}$'`" # echo "$_if = $_ifethaddr" [ -z "$_ifethaddr" ] && continue case $_ifethaddr in "00:00:00:00:00:00") ifconfig $_if name net0 ;; "01:00:00:00:00:00") ifconfig $_if name net1 ;; "02:00:00:00:00:00") ifconfig $_if name net2 ;; "03:00:00:00:00:00") ifconfig $_if name net3 ;; *) continue ;; esac done return 0 } fix_ifname_by_etheraddr
この時、置き換え後の名前に使えるのはとりあえず net しかわからない。
mknod とかで特殊ノードを作れば好きな名前にできるのかもしれない(未検証)。
あとこのスクリプトを走らせるタイミングをどうするか。
USB nic が挿さったタイミングで実行したいようなしたくないような。
ipfw とかどうなるんだろうかとか気になる。