[Armadillo:00823] Re: リンクアップ/ダウンを検出する方法

TNN Makoto Nakamura email@hidden
2006年 1月 23日 (月) 18:10:22 JST


いつもお世話になっています。
中村@TNNシステムズです。

もっとスマートな方法があるかもしれませんが
自分は以下のようにチェックしています。

ご参考までに・・・

※ついでに書きますが
  アルマジロ起動時等のIP設定中に外部からpingとか
  httpリクエストを投げるとリンクアップ出来ないことが
  あるようです。
  
---------------------------------------------------------
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <sys/ioctl.h>
#include <net/if.h>

int Eth_Link_Get(char *ifname)
{
    struct ifreq ifr;
    int skfd=-1;
    int ret = -1;

    /* ソケットを開く */
    skfd = socket(AF_INET, SOCK_DGRAM, 0);
    if (skfd < 0) {
        close(skfd);
        // リンクダウン
        return(-1) ;
    }

    /* インターフェースを取得する */
    strcpy(ifr.ifr_name, ifname);
    if (ioctl(skfd, SIOCGIFFLAGS, &ifr) < 0) {
        close(skfd);
        // リンクダウン
        return(-1);
    }

    /* リンク状態確認 */
    if (ifr.ifr_flags & IFF_UP) {
        /* IPアドレス確認 */
        if (ioctl(skfd, SIOCGIFADDR, &ifr) == 0) {
                // リンクアップ
                ret = 0;
        }
    }

    close(skfd);

    return(ret);
}


"kurosaki" <email@hidden>さん:
> SYSCOM黒崎です。
> 
> Armadillo-JにLANケーブルが接続されているかどうかを判断したいのですが、リ
> ンクアップ/ダウンを検出する手だてはありますでしょうか。
> ご存じの方いらっしゃいましたら、よろしくお願いいたします。
> 
> _______________________________________________
> armadillo mailing list
> email@hidden
> http://lists.atmark-techno.com/mailman/listinfo/armadillo
> 




armadillo メーリングリストの案内