summaryrefslogtreecommitdiffstats
path: root/usr.sbin/gifconfig
diff options
context:
space:
mode:
authorume <ume@FreeBSD.org>2001-06-11 12:39:29 +0000
committerume <ume@FreeBSD.org>2001-06-11 12:39:29 +0000
commit832f8d224926758a9ae0b23a6b45353e44fbc87a (patch)
treea79fc7ad2b97862c4a404f352f0211ad93a7b5f1 /usr.sbin/gifconfig
parent2693854b01a52b0395a91322aa3edf926bddff38 (diff)
downloadFreeBSD-src-832f8d224926758a9ae0b23a6b45353e44fbc87a.zip
FreeBSD-src-832f8d224926758a9ae0b23a6b45353e44fbc87a.tar.gz
Sync with recent KAME.
This work was based on kame-20010528-freebsd43-snap.tgz and some critical problem after the snap was out were fixed. There are many many changes since last KAME merge. TODO: - The definitions of SADB_* in sys/net/pfkeyv2.h are still different from RFC2407/IANA assignment because of binary compatibility issue. It should be fixed under 5-CURRENT. - ip6po_m member of struct ip6_pktopts is no longer used. But, it is still there because of binary compatibility issue. It should be removed under 5-CURRENT. Reviewed by: itojun Obtained from: KAME MFC after: 3 weeks
Diffstat (limited to 'usr.sbin/gifconfig')
-rw-r--r--usr.sbin/gifconfig/gifconfig.89
-rw-r--r--usr.sbin/gifconfig/gifconfig.c60
2 files changed, 54 insertions, 15 deletions
diff --git a/usr.sbin/gifconfig/gifconfig.8 b/usr.sbin/gifconfig/gifconfig.8
index c851624..26b4dd6 100644
--- a/usr.sbin/gifconfig/gifconfig.8
+++ b/usr.sbin/gifconfig/gifconfig.8
@@ -1,5 +1,5 @@
.\" $FreeBSD$
-.\" $KAME: gifconfig.8,v 1.5 2000/05/13 07:48:10 itojun Exp $
+.\" $KAME: gifconfig.8,v 1.6 2000/11/22 11:10:09 itojun Exp $
.\"
.\" Copyright (C) 1995, 1996, 1997, and 1998 WIDE Project.
.\" All rights reserved.
@@ -34,6 +34,7 @@
.Sh NAME
.Nm gifconfig
.Nd configure generic IP tunnel
+.\"
.Sh SYNOPSIS
.Nm
.Ar interface
@@ -60,7 +61,7 @@ specifies the address family for
.Ar physsrc
and
.Ar physdest .
-.Ar Af
+.Ar af
can be
.Li inet
or
@@ -81,7 +82,9 @@ If no outer addresses are specified, this usage has no effect.
takes the following optional argument:
.Bl -tag -width Ds
.It Fl a
-Display information associated all generic IP tunnel interfaces.
+Display information associated with all
+.Xr gif 4
+interfaces.
.El
.Pp
Please note that it is very easy to create infinite routing loop,
diff --git a/usr.sbin/gifconfig/gifconfig.c b/usr.sbin/gifconfig/gifconfig.c
index d93d741..ac876dc 100644
--- a/usr.sbin/gifconfig/gifconfig.c
+++ b/usr.sbin/gifconfig/gifconfig.c
@@ -1,5 +1,5 @@
/* $FreeBSD$ */
-/* $KAME: gifconfig.c,v 1.12 2000/05/22 05:50:43 itojun Exp $ */
+/* $KAME: gifconfig.c,v 1.14 2001/01/01 04:04:56 jinmei Exp $ */
/*
* Copyright (c) 1983, 1993
@@ -111,7 +111,7 @@ void delifaddrs __P((char *, int));
#define NEXTARG 0xffffff
-struct cmd {
+static struct cmd {
char *c_name;
int c_parameter; /* NEXTARG means next argv */
void (*c_func) __P((char *, int));
@@ -565,10 +565,11 @@ phys_status(force)
char psrcaddr[256];
char pdstaddr[256];
char hostname[NI_MAXHOST];
- u_long srccmd, dstcmd;
int flags = NI_NUMERICHOST;
+ char *af;
+#ifndef SIOCGLIFPHYADDR
+ u_long srccmd, dstcmd;
struct ifreq *ifrp;
- char *ver = "";
#ifdef INET6
int s6;
#endif
@@ -596,20 +597,55 @@ phys_status(force)
#endif /* INET6 */
if (0 <= ioctl(s, srccmd, (caddr_t)ifrp)) {
- getnameinfo(&ifrp->ifr_addr, ifrp->ifr_addr.sa_len,
- hostname, sizeof(hostname), 0, 0, flags);
#ifdef INET6
if (ifrp->ifr_addr.sa_family == AF_INET6)
- ver = "6";
+ af = "inet6";
+ else
+ af = "inet";
+#else
+ af = "inet";
#endif /* INET6 */
- sprintf(psrcaddr, "inet%s %s", ver, hostname);
+ if (getnameinfo(&ifrp->ifr_addr, ifrp->ifr_addr.sa_len,
+ psrcaddr, sizeof(psrcaddr), 0, 0, flags) != 0)
+ psrcaddr[0] = '\0';
}
if (0 <= ioctl(s, dstcmd, (caddr_t)ifrp)) {
- getnameinfo(&ifrp->ifr_addr, ifrp->ifr_addr.sa_len,
- hostname, sizeof(hostname), 0, 0, flags);
- sprintf(pdstaddr, "%s", hostname);
+ if (getnameinfo(&ifrp->ifr_addr, ifrp->ifr_addr.sa_len,
+ pdstaddr, sizeof(pdstaddr), 0, 0, flags) != 0)
+ pdstaddr[0] = '\0';
+ }
+ printf("\tphysical address %s %s --> %s\n", af, psrcaddr, pdstaddr);
+#else
+ struct if_laddrreq iflr;
+
+ force = 0; /*fool gcc*/
+
+ psrcaddr[0] = pdstaddr[0] = '\0';
+
+ memset(&iflr, 0, sizeof(iflr));
+ memcpy(iflr.iflr_name, ifr.ifr_name, sizeof(iflr.iflr_name));
+
+ if (0 <= ioctl(s, SIOCGLIFPHYADDR, (caddr_t)&iflr)) {
+ switch (iflr.addr.ss_family) {
+ case AF_INET:
+ af = "inet";
+ break;
+#ifdef INET6
+ case AF_INET6:
+ af = "inet6";
+ break;
+#endif /* INET6 */
+ }
+ if (getnameinfo((struct sockaddr *)&iflr.addr, iflr.addr.ss_len,
+ psrcaddr, sizeof(psrcaddr), 0, 0, flags) != 0)
+ psrcaddr[0] = '\0';
+ if (getnameinfo((struct sockaddr *)&iflr.dstaddr,
+ iflr.dstaddr.ss_len, pdstaddr, sizeof(pdstaddr), 0, 0,
+ flags) != 0)
+ pdstaddr[0] = '\0';
}
- printf("\tphysical address %s --> %s\n", psrcaddr, pdstaddr);
+ printf("\tphysical address %s %s --> %s\n", af, psrcaddr, pdstaddr);
+#endif
}
void
OpenPOWER on IntegriCloud