web-dev-qa-db-ja.com

ネットワークインターフェイス名の長さはどのくらいですか?

50文字以上の長いネットワークインターフェイス名に対応するために、いくつかのデータベーステーブルを調整する必要があります。インターフェイス名の長さには標準があるので、正しくマッピングできますか。

23
Andrei Matei

これのLinux固有の部分に関する限り、最近のカーネルバージョンでは、これは [〜#〜] ifnamsiz [〜#〜] によって16バイトになるように定義されているため、ユーザーに表示される15バイト(後続のヌルが含まれます)。 IFNAMSIZは、struct net_deviceの名前フィールド here の定義に使用されます。

経験的にテストするために、次を使用して16バイトが失敗し、15バイトが機能することを確認できます。

# CLEAN SLATE
root# ip link ls dev 123456789012345
Device "123456789012345" does not exist.
root# ip link ls dev 1234567890123456
Device "1234567890123456" does not exist.

# FAIL
root# ip link add dev 1234567890123456 type dummy
Error: argument "1234567890123456" is wrong: "name" too long
root# ip link ls dev 1234567890123456
Device "1234567890123456" does not exist.

# PASS
root# ip link add dev 123456789012345 type dummy
root# ip link ls dev 123456789012345
40: 123456789012345: <BROADCAST,NOARP> mtu 1500 qdisc noop state DOWN mode DEFAULT group default 
link/ether ... brd ff:ff:ff:ff:ff:ff

# CLEAN UP
root# ip link del dev 123456789012345

(過去10年以内のLinuxディストリビューションではおそらくそうであるように、iproute2パッケージのipがインストールされていると仮定します。)

29
CitizenB

また、DHCPでインターフェースを使用する場合は、この問題のため、名前の長さが14未満である必要があります。

https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=85858

5
jonseymour