From owner-FreeBSD-net-jp@jp.freebsd.org  Mon Mar  8 20:07:33 1999
Received: by jaz.jp.freebsd.org (8.9.2+3.1W/8.7.3) id UAA01731;
	Mon, 8 Mar 1999 20:07:33 +0900 (JST)
	(envelope-from owner-FreeBSD-net-jp@jp.FreeBSD.org)
Received: from nwgpc.kek.jp (genseric.kek.jp [130.87.2.129])
	by jaz.jp.freebsd.org (8.9.2+3.1W/8.7.3) with ESMTP id UAA01715
	for <FreeBSD-net-jp@jp.freebsd.org>; Mon, 8 Mar 1999 20:07:30 +0900 (JST)
	(envelope-from yamagata@nwgpc.kek.jp)
From: yamagata@nwgpc.kek.jp
Received: from nwgpc.kek.jp (localhost [127.0.0.1])
	by nwgpc.kek.jp (8.9.3/nwgpc-98.5.27) with ESMTP id UAA04408;
	Mon, 8 Mar 1999 20:07:28 +0900 (JST)
To: FreeBSD-net-jp@jp.freebsd.org
In-Reply-To: <199712030325.MAA16678@lavender.rad.cc.keio.ac.jp>
References: <19971202213142I.simokawa@sat.t.u-tokyo.ac.jp>
	<199712030325.MAA16678@lavender.rad.cc.keio.ac.jp>
X-Mailer: Mew version 1.94b9 on Emacs 20.3 / Mule 4.0 (HANANOEN)
Mime-Version: 1.0
Content-Type: Text/Plain; charset=iso-2022-jp
Content-Transfer-Encoding: 7bit
Message-Id: <19990308200728V.yamagata@nwgpc.kek.jp>
Date: Mon, 08 Mar 1999 20:07:28 +0900
X-Dispatcher: imput version 990225(IM107)
Lines: 87
Reply-To: FreeBSD-net-jp@jp.freebsd.org
Precedence: list
X-Distribute: distribute version 2.1 (Alpha) patchlevel 24e+981115
X-Sequence: FreeBSD-net-jp 1433
Subject: [FreeBSD-net-jp 1433] Re: DNS & DHCP
Errors-To: owner-FreeBSD-net-jp@jp.freebsd.org
Sender: owner-FreeBSD-net-jp@jp.freebsd.org
X-Originator: yamagata@nwgpc.kek.jp

$B$3$s$K$A$O!";37A$G$9!#(B
$B$=!<$HA0$NOCBj$G$9$,!"(B

In message <199712030325.MAA16678@lavender.rad.cc.keio.ac.jp>,
MIHIRA "Sanpei" Yoshiro wrote

> junichi> MAC $B%"%I%l%9<hF@$9$k$?$a$@$1$K(B kmem $BFI$s$G$?$h$&$J!#(B
> junichi> $B$3$l$,L5$/$J$l$P!"(Bkernel $B$,JQ$C$F$b0JA0$N%P%$%J%jF0$/$N$K(B...
> 
>   $B0l;~4|(B ifconfig $B$+$iD4$Y$?$N$G$9$,(B, $BK;$7$/$J$C$F$=$N$^$^$G$9!D!D(B
>   $B$I$J$?$+BP1~$7$F$b$i$($l$P(B ports $B$N(B wide-dhcp $B$KH?1G$7$^$9(B.
> 
> # $B$I$3$^$GD4$Y$?$N$+$J$!!D!D(B
> # wide-dhcp $B$b(B 1.4x $B$,=P$F$$$k$7(B. 
> 
> sanpei

$B$3$N$0$i$$$G$I$&$G$7$g$&!#(B
$B!t(Bmy_size()$B$N$*$+$2$G$I$3$+$i$b$C$F$-$?$+%P%l%P%l!#(B

#include <sys/types.h>
#include <sys/ioctl.h>
#include <sys/socket.h>
#include <net/if.h>
#include <net/if_dl.h>
#include <netinet/in.h>

#if defined(AF_LINK) && !defined(RISCOS_BSD) && !defined(M_UNIX)
#define my_max(a, b) (a > b ? a : b)
#define my_size(p)      my_max((p).sa_len, sizeof(p))
#else
#define my_size(p) (sizeof (p))
#endif

main(argc, argv)
    int             argc;
    char          **argv;
{
    int             s;
    char            buf[32768], *cp, *cplim;
    struct ifconf   ifc;
    struct in_addr  ia;
    struct ifreq    ifreq, *ifr;

    s = socket(AF_INET, SOCK_STREAM, 0);
    if (s < 0) {
        perror("socket:");
        exit(1);
    }
    ifc.ifc_len = sizeof(buf);
    ifc.ifc_buf = buf;
    if (ioctl(s, SIOCGIFCONF, (char *) &ifc) < 0) {
        perror("ioctl:");
        exit(1);
    }
    cplim = buf + ifc.ifc_len;  /* skip over if's with big ifr_addr's */
    for (cp = buf;
         cp < cplim;
         cp += sizeof(ifr->ifr_name) + my_size(ifr->ifr_addr)) {
        ifr = (struct ifreq *) cp;

        switch (ifr->ifr_addr.sa_family) {
        case AF_INET:
            printf("%s af_inet %s\n", ifr->ifr_name,
               inet_ntoa(((struct sockaddr_in *)&ifr->ifr_addr)
                         ->sin_addr.s_addr));
            break;
        case AF_LINK:
            {
                struct sockaddr_dl *dl = (struct sockaddr_dl *)&ifr->ifr_addr;
                unsigned char *p = LLADDR(dl);
                int             i;

                printf("%s af_link sdl_type=%d ", ifr->ifr_name, dl->sdl_type);

                for (i = 0; i <dl->sdl_alen; i++) {
                    if (i>0)
                        printf(":");
                    printf("%02x", p[i]);
                }
                printf("\n");
            }
            break;
        }
    }
    exit(0);
}
