■ネットワークインタフェースの確保
struct net_device *mynet_dev;
mynet_dev = alloc_netdev(PRIV_SIZE, NDEV_NAME, ether_setup);
// PRIV_SIZE にプライベートデータを保存する領域のサイズ(int。特になければ 0)
// NDEV_NAME にネットワークインタフェースの名前 (char *)
■ネットワークインタフェースの登録
mynet_dev->netdev_ops = &mynet_dev_ops;
register_netdev(mynet_dev);
これで、カーネルにネットワークインタフェースの登録が完了する。
ただし、最低限、下記の netdev_ops を定義しておかなければならない。
static struct net_device_ops mynet_dev_ops = {
.ndo_init = mynet_init,
.ndo_open = mynet_open,
.ndo_start_xmit = mynet_xmit,
};
.ndo_open が ifconfig を実行したとき呼ばれる関数である。
また、.ndo_init は reigster_netdev() 実行時に呼ばれる関数、
ndo_start_xmit は、パケット送信時に呼ばれる関数である。
ndo_start_xmit は、パケット送信時に呼ばれる関数である。
0 件のコメント:
コメントを投稿