[Armadillo:01940] リンクアップ/ダウンを検出する方法
Hiroki Nakamura
email@hidden
2007年 8月 23日 (木) 17:13:16 JST
お世話になります。
nakamuraと申します。
Armadillo-9を使用しております。
「[Armadillo:00824] Re: リンクアップ/ダウンを検出する方法」に従って
★のようなTPを作成してArmadillo-9で動作させました。しかし、LANケーブル
接続の有無に拠らず、常にLink downとなっているよです。
提示された方法は、Armadillo-9には適用されないのでしょうか?
カーネルは以下です。
Linux armadillo9 2.6.12.3-a9-8 #1 Fri Oct 20 13:55:08 JST 2006 armv4tl
GNU/Linux
↓★↓
#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);
int main(void)
{
int flg;
int ret;
char buf[20];
flg = 0;
for(;;) {
sleep(1);
ret = Eth_Link_Get(buf); //リンク確認
if(ret == 0) { //リンクアップ
printf("Link Up !\n");
}
else { //リンクダウン
printf("Link down !\n");
}
}
return 0;
}
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);
}
以上、
よろしくお願いします。
armadillo メーリングリストの案内