[Armadillo:02050] Armadillo220のLANの結線状況の取得

林田 平馬 email@hidden
2007年 9月 18日 (火) 10:45:41 JST


いつもお世話になっております。
林田と申します。

最新の環境(Atmark-dist,v20070720とkernel,v2.6.12.3-a9-9)でLANの結線状況
が取得可能(Armadillo:01784、Armadilloシリーズ ソフトウェアアップデートのお知
らせ)
になったとのことなので、過去スレッド、Armadillo:01955、00824を参考に、下記
コードで
試してみましたが、ケーブルを抜いていてもupの状態が帰ってきます。固定IP環境な
ので
IP関連の判別式は意味が無さそうなのはわかるのですが、どうやって結線状況を取得

するのかがわかりません。何か参考がありましたらよろしくお願いします。


int Eth_Link_Get(char *iface)
{
	struct ifreq ifreq;
	int fd;
	int ret;

	memset(&ifreq, 0, sizeof(struct ifreq));

	fd = socket(PF_INET, SOCK_RAW, IPPROTO_RAW);
	if (fd < 0) {
		return 1; /* down */
	}

	strcpy(ifreq.ifr_ifrn.ifrn_name, iface);

	ret = ioctl(fd, SIOCGIFFLAGS, &ifreq);
	if (ret < 0) {
		return 1; /* down */
	}

	if(ifreq.ifr_flags & IFF_RUNNING){
		if (ioctl(fd, SIOCGIFADDR, &ifreq) == 0) {
			return 0; /* up */
                   }
	}

	return 1; /* down */
}


link = Eth_Link_Get("eth0");で呼び出してます。

_________________________________________________________________
いよいよ日本時間9月17日に行われるエミー賞授賞式!受賞結果やレポートを随時掲載
 http://event.jp.msn.com/autumn2007/emmy59/default.htm 




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