ARP操作用のAPIは提供されていますか?

弊社TCP/IPプロトコルスタック「μNet3」に関するご質問
返信する
アバター
eForce技術担当
記事: 193
登録日時: 2014年4月24日(木) 14:18

ARP操作用のAPIは提供されていますか?

投稿記事 by eForce技術担当 » 2018年3月14日(水) 11:40

対象:
μNet3/Compact、μNet3/Standard

質問:
ARP操作をユーザアプリから実施したいと考えていますが、ARP操作用のAPIは提供されていますか?

回答:
標準のμNet3ライブラリではARP操作を未サポートのため、μNet3ライブラリのリビルドが必要となります。
ライブラリのプロジェクトで「ARP_API_SUP」定義をpre-define してビルドすることで、ARP APIが
利用可能なμNet3ライブラリが生成されます。利用可能なAPIについては以下をご確認ください。

コード: 全て選択

/* ARPキャッシュ登録 ... 引数IPアドレス(ip)とMACアドレス(mac)の対をARPキャッシュに登録します */
ER arp_set(UH dev_num, UW ip, UB *mac);

/* 使用例 */
ER ercd;
UB mac[6] = { 0x12, 0x34, 0x56, 0x78, 0x9a, 0xbc };

ercd = arp_set(1, ip_aton("192.168.1.110"), mac);
if (E_OK == ercd) {
    /* ARPキャッシュ登録 成功 (ip=192.168.1.110, mac=12:34:56:78:9a:bc のエントリが登録された) */
}
else {
    /* ARPキャッシュ登録 失敗 (E_ID: デバイス番号不正, E_NOMEM: ARPキャッシュに空きなし) */
}

コード: 全て選択

/* ARPキャッシュ参照 ... 引数IPアドレス(ip)をキーに、ARPキャッシュからMACアドレス(mac)を取得します */
ER arp_ref(UH dev_num, UW ip, UB *mac);

/* 使用例 */
ER ercd;
UB mac[6];

ercd = arp_ref(1, ip_aton("192.168.1.110"), mac);
if (E_OK == ercd) {
    /* ARPキャッシュ参照 成功 (macに指定IPアドレスに対応したMACアドレスが入る) */
}
else {
    /* ARPキャッシュ参照 失敗 (E_ID: デバイス番号不正, E_NOEXS: ARPキャッシュに登録なし) */
}

コード: 全て選択

/* ARPリクエスト送信 ... 引数IPアドレス(ip)を解決するARPリクエストを送信します */
ER arp_req(UH dev_num, UW ip);

/* 使用例 */
ER ercd;

ercd = arp_req(1, ip_aton("192.168.1.110"));
if (E_OK == ercd) {
    /* ARP送信 成功 (ARP送信はしたが、ARP応答があるかはこの時点では不明) */
}
else {
    /* ARP送信 失敗 (E_ID: デバイス番号不正, E_PAR: デバイスタイプがEthernet以外 ...) */
}

コード: 全て選択

/* ARPキャッシュクリア ... 手動で登録したものも含めてARPキャッシュをクリアします */
ER arp_clr(void);
※ユーザーズガイド非公開のAPIのため、弊社都合により仕様が変わる場合がございます。予めご了承下さい。

返信する