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

[plamo:19536] 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 をかけてあげる、というのはひと
> つの手ですね。例えば、
>

PPPoE で2セッションの接続をしているときに、どちらの接続が ppp0 か
というのが判然としないのです。判らないのでは無いですが、情報として
ではなく手順にあるのが気に入らないのです。
  /etc/ppp に
     options.eth0
     options.eth1
のように書いて置けば、どちらの ethx がどこにつながるかは判るのです
が、どちらが ppp0 になったかはコマンドの実行順序によるので、何かの
時には逆転しかねません。また、ppp2 に成らないとも言えないのです。

今は、/etc/ppp/ip-up /etc/ppp/ip-down にまとまって情報が出てくるの
でここに logger を置いて /var/log/messages に
   ppp[0-9]
   eth[0-9]
   ip address
   DNS
を出しています。接続の時は ip-up の実行を待てば得られるのですが、
(perl で見ているのですが)
  ・ pppd eth0 を実行する。
  ・ tail -f /var/log/messages で ip-up の実行を待つ。
と言う手順です。
同様に、ip-down の情報で pppX ethX に掛かる切断は判ります。
目的は達成しているのですが、些か「美しくない」のです。

# 単に、好みの問題です。
 
>     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 をいじればどうにかなりそうですが、
>

pppd の ipcp.c の中で ip-up ip-down をコールしているのでここにパッ
チを掛ければ、情報を特定の場所に書き込む事は可能なのです。
パッチしなくても ip-up ip-down に渡されるので、こちらで書けば バー
ジョンに無関係になるので、安全です。
既に組み込まれているものがあれば「そちらを使いたい」と言うことです。

# 自分で作成して悦に入っていると、同一の機能のものが美しく組み込ま
# れていたりして、残念な事があります。調べもせずに漢字変換プログラ
# ムなど、いくつも作成しても major なコードなら nkf ですべて済みで
# す。

> > 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 の出力にかなり情報が乗っていたりするのですが。

結局、pppX ethX を結ぶ情報は /proc や /var/run の中には無いと言う
ことですか。

-- 早間  yossi@yedo.src.co.jp

Follow-Ups
[plamo:19540] Re: pppと使用するデバイス, Shun-ichi TAHARA (田原 俊一)
References
[plamo:19529] ppp と使用するデバイス, 早間義博
[plamo:19534] Re: pppと使用するデバイス, Shun-ichi TAHARA (田原 俊一)

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