ダミーのネットワークインターフェイスを作成して起動すると、不明な状態で表示されます。
root@5b8dd2855a9c:# ip l a boom type dummy
root@5b8dd2855a9c:# ip l show boom
58: boom: <BROADCAST,NOARP> mtu 1500 qdisc noop state DOWN mode DEFAULT
link/ether 1e:f6:4b:60:ff:1a brd ff:ff:ff:ff:ff:ff
root@5b8dd2855a9c:# ip l set boom up
root@5b8dd2855a9c:# ip l show boom
58: boom: <BROADCAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc noqueue state **UNKNOWN** mode DEFAULT
link/ether 1e:f6:4b:60:ff:1a brd ff:ff:ff:ff:ff:ff
root@5b8dd2855a9c:#
誰もが理由を知っていますか? IPアドレスを割り当ててみましたが、問題は解決しませんでした。
私はこれを次のマシンでテストしました:
root@5b8dd2855a9c:# uname -a
Linux 5b8dd2855a9c 3.16.1-tinycore64 #1 SMP Fri Aug 22 05:53:09 UTC 2014 x86_64 GNU/Linux
root@5b8dd2855a9c:#
更新:
したがって、これによってインターフェイスが動作しなくなるわけではないようです。いくつかのスラブグーグルの後、私は出くわしました この情報
drivers/net/dummy.c および include/linux/netdevice.h を見ると、ダミーのネットワークインターフェイスドライバーは、ネットワークデバイス操作の小さなサブセットのみを実装しているようです。
drivers/net/dummy.c の112行目から、次のことがわかります。
static const struct net_device_ops dummy_netdev_ops = {
.ndo_init = dummy_dev_init,
.ndo_uninit = dummy_dev_uninit,
.ndo_start_xmit = dummy_xmit,
.ndo_validate_addr = eth_validate_addr,
.ndo_set_rx_mode = set_multicast_list,
.ndo_set_mac_address = eth_mac_addr,
.ndo_get_stats64 = dummy_get_stats64,
.ndo_change_carrier = dummy_change_carrier,
};
include/linux/netdevice.h を見ている間、ここでstruct net_device_ops
が定義されているようです(正確には1057行目):
int (*ndo_set_vf_link_state)(struct net_device *dev,
int vf, int link_state);
ここにテキストの壁を置いて+10を獲得することを期待するのではなく、これはあなたの質問に答えるという点で私たちをどこに残しますか?ええと、答えは「はい」と「いいえ」のようなものです。
ソースは、はい、状態を設定するものがないため、状態UNKNOWNは予期される動作であると明らかにしています。したがって、それは間違いなくUNKNOWNである必要があります。一方、ダミーインターフェイスを起動するユーザーは、状態が変化するのを確認する必要があると予想するのが妥当です。カーネルの一部では満たされない、ユーザーの観点からの合理的な期待の古典的な例。
次の質問は次のようになります:これはバグですか?修正する必要がありますか?この答えがこれを修正することは確かに可能ですが、そうすることを望むならば、それは範囲を超えています。ただし、ダミーインターフェイスがカーネルにかなり長い間(正確には20年)存在していることは注目に値するかもしれません。 1994年に、ユーザーランドへのダミーインターフェイスの正しいリンク状態を提示することは、それほど優先事項ではなかったと思います。