[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[plamo:19534] Re: pppと使用するデバイス



From: 早間義博 <yossi@yedo.src.co.jp>
Message-Id: <20030707.132258.74750464.yossi@yedo.src.co.jp>

> PPPoE 切断の監視をしているのですが、EtherCard と pppx (ネットワー
> クデバイスと言うのでしょうか)をつなぐ情報を探しています。

PPPoE が切れたことを検出するだけでしたら、例えば ppp1 なら ppp1 に対し
て、適当なソケットを作って適当な IOCTL をかけてあげる、というのはひと
つの手ですね。例えば、

    int sock;
    struct ifreq ifr;

    sock = socket(AF_INET, SOCK_DGRAM, 0);
    strncpy(ifr.ifr_name, "ppp1", IFNAMSIZ);
    ioctl(sock, SIOCGIFADDR, &ifr);

で、(struct sockaddr)(ifr.ifru_addr) に IPアドレスが取り出せますので、
取り出せれば繋がっていると判断できます。

詳しくは、man 2 ioctl_list とか /usr/include/linux/if.h とか。

> #/var/log/messages に作成される
> #    pppd[8813]: Connect: ppp1 <--> eth2
> # のような情報です。

このへんは、極端な話、pppd をいじればどうにかなりそうですが、

> EtherCard と pppx の関係を知るためには
>   (1) /var/log/messages の次の情報
>           pppd[8813]: Connect: ppp1 <--> eth2
>   (2)/etc/ppp/ip-up 或いは /etc/ppp/ip-down のアーギュメントに
>         与えられる情報
> の2つしか無いのでしょうか。
> (/proc の中を見たのですが見あたりません)

伝統的に Linux では、ネット関連の情報は /proc には出てこなくて、有用な
情報は ioctl() で取り出すしかないような感触があります。

# OS によっては、ifconfig の出力にかなり情報が乗っていたりするのですが。
_______________________________
田原 俊一   jado@flowernet.gr.jp, shunichi_tahara@zenrin.co.jp
                                  http://flowernet.gr.jp/jado/
FingerPrint:  16 9E 70 3B 05 86 5D 08  B8 4C 47 3A E7 E9 8E D9
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄

Follow-Ups
[plamo:19536] Re: ppp と使用するデバイス, 早間義博
References
[plamo:19529] ppp と使用するデバイス, 早間義博

[検索ページ] [メール一覧]
Plamo ML 公開システム