From owner-IPv6-jp@jp.freebsd.org  Mon Dec 20 18:49:54 1999
Received: (from daemon@localhost)
	by castle.jp.freebsd.org (8.9.3+3.2W/8.7.3) id SAA43373;
	Mon, 20 Dec 1999 18:49:54 +0900 (JST)
	(envelope-from owner-IPv6-jp@jp.FreeBSD.org)
Received: from zoo.zebra.org (zoo.zebra.org [203.181.89.26])
	by castle.jp.freebsd.org (8.9.3+3.2W/8.7.3) with ESMTP id SAA43367
	for <IPv6-jp@jp.freebsd.org>; Mon, 20 Dec 1999 18:49:54 +0900 (JST)
	(envelope-from kunihiro@zebra.org)
Received: from localhost ([127.0.0.1] helo=zoo.zebra.org)
	by zoo.zebra.org with esmtp (Exim 3.03 #1 (Debian))
	id 11zqwz-0000XU-00
	for <IPv6-jp@jp.freebsd.org>; Mon, 20 Dec 1999 09:45:21 +0900
Date: Mon, 20 Dec 1999 09:45:21 +0900
Message-ID: <14429.31777.149518.55811W@zoo.zebra.org>
From: Kunihiro Ishiguro <kunihiro@zebra.org>
To: IPv6-jp@jp.freebsd.org
In-Reply-To: In your message of "Sun, 19 Dec 1999 09:58:03 +0900"
	<6571.945565083@coconut.itojun.org>
References: <19991219050920X.keiji@hiemalis.org>
	<6571.945565083@coconut.itojun.org>
User-Agent: Wanderlust/1.0.2 (Monkey) SEMI/1.13.2 (Mikawa) FLIM/1.12.5 (Hirahata) Emacs/20.4.91 (i686-pc-linux-gnu) MULE/4.0 (HANANOEN)
MIME-Version: 1.0 (generated by SEMI 1.13.2 - "Mikawa")
Content-Type: text/plain; charset=ISO-2022-JP
Reply-To: IPv6-jp@jp.freebsd.org
Precedence: list
X-Distribute: distribute version 2.1 (Alpha) patchlevel 24e+990727
X-Sequence: IPv6-jp 410
Subject: [IPv6-jp 410] Re: v4 ports 
Errors-To: owner-IPv6-jp@jp.freebsd.org
Sender: owner-IPv6-jp@jp.freebsd.org
X-Originator: kunihiro@zebra.org

>>kame$B$r$$$l$?(Bv6$B4D6-$K$*$$$F(B33R$B$N(Bports$B$r;H$C$F$$$^$9$,!"(B
>>$B$=$3$G$R$H$D<ALd$,$"$j$^$9!#(B
>>$B8=:_LdBj$,$"$k$H$o$+$C$?$N$,!"(Bdserver$B$H(Btrafshow$B$G$9!#(B
>>$B$3$l$i$O(Binterface$B$N%A%'%C%/$K(Bioctl$B$rMQ$$$F$*$j!"(B
>>$B$=$N$?$a$N(Bifreq$B$N%P%C%U%!3NJ]$KKd$a9~$NDj?t$r;H$C$F$$$^$9!#(B
>>interface$B$N?t$,>/$J$1$l$PLdBj$"$j$^$;$s$,(Bkame$B$N4D6-$G$9$H!"(B
>>gif$B$J$I$G$=$N?t$,B?$/$J$j$=$N%P%C%U%!$r1[$($kCM$r(Bioctl$B$,JV$=$&$H$9$k$?$a!"(B
>>signal11$B$G$*$A$k$J$I$G$&$^$/F0$-$^$;$s!#(B
>># $BC1=c$KDj?t$K$J$C$F$$$k$H$3$m$rBg$-$/$9$l$P$H$j$"$($:2sHr$G$-$^$9$,!#(B
>
>	SIOCGIFCONF$B$G$9$M(B? SIOCGIFCONF$B$O!"!V>e$+$i8GDjNL$N(B
>	$B%P%C%U%!$rEO$7$FE,Ev$KJV;v$r5M$a$F$b$i$&!W$H$$$&%$%s%?%U%'!<%9$K(B
>	$B$J$C$F$$$^$9!#$D$^$j!"$I$&$d$C$F$b(Buserland$BB&$G%P%C%U%!%5%$%:$r7h$aBG$A(B
>	$B$7$F$7$^$&$3$H$K$J$k$o$1$G$9!#(B
>
>	$B2sHrJ}K!$O(B
>	- SIOCGIFCONF$B$r!"%P%C%U%!%5%$%:$rA}$d$7$J$,$iJ#?t2s8F$V!#(B
>	  n-1$B2sL\$KJV$C$FMh$?NL(B == n$B2sL\$KJV$C$FMh$?NL$J$i!"%P%C%U%!%5%$%:$,(B
>	  $B==J,Bg$-$/$J$C$?$N$G=*N;!#$=$l$^$G$O7+$jJV$9!#(B
>	- sysctl$B$r;H$&(B($BCp(B: $B0\?"@-Dc$$(B)
>	- routing socket$B$r;H$&(B($B$@$C$1(B?)
>	$B$/$i$$$G$7$g$&$+!#(B

sysctl $B$H(B routing socket $BJ}<0$O$[$H$s$I(B equal $B$@$H;W$C$FNI$$$H;W$$$^$9(B
(Solaris $B$r=|$/(B)$B!#5/F0;~$K(B sysctl $B$G(B interface $B$r(B get $B$7$F!"$=$N$"$H$N(B
$BJQ99$r(B routing socket $B$G(B get $B$7$^$9!#$I$A$i$b5"$C$F$/$k%a%C%;!<%8$N%U%)!<(B
$B%^%C%H$OF1$8$J$N$G!"BP1~$b3Z$G$9!#$H$$$&$o$1$G!"(B*BSD $BBP1~$H$$$&0UL#$G(B
$B$O0l5$$K(B sysctl + routing socket $B$,NI$$$H;W$$$^$9!#(B

$B$I$&$7$F$b(B SIOCGIFCONF lovely $B$H$$$&>l9g(B(Linux $B$G$bF0$/$7(B)$B$O!"%P%C%U%!(B
$B$r(B overflow $B$7$J$1$l$PNI$$$o$1$G$9$+$i!"(B

#define IFNUM_BASE 32
  int ifnum;
  struct ifreq *ifreq;
  struct ifconf ifconf;

  ifnum = IFNUM_BASE;

  /* Loop until SIOCGIFCONF success. */
  for (;;) 
    {
      ifconf.ifc_len = sizeof (struct ifreq) * ifnum;
      ifconf.ifc_buf = XREALLOC(MTYPE_TMP, ifconf.ifc_buf, ifconf.ifc_len);

      ret = ioctl(sock, SIOCGIFCONF, &ifconf);
      if (ret < 0) 
        {
          fprintf (stderr, "SIOCGIFCONF: %s", strerror(errno));
          goto end;
        }
      /* When length is same as we prepared, assume it overflowed and
         try again */
      if (ifconf.ifc_len == sizeof (struct ifreq) * ifnum) 
        {
          ifnum += 10;
          continue;
        }
      /* Success. */
      break;
    }

$B$H$$$&$U$&$K$d$C$H$j$^$9!#(B
-- 
Kunihiro Ishiguro
