Source-Changes-HG archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
[src/trunk]: src/usr.sbin/ifmcstat bring in latest KAME tree. show kludge en...
details: https://anonhg.NetBSD.org/src/rev/762e034cfcea
branches: trunk
changeset: 481562:762e034cfcea
user: itojun <itojun%NetBSD.org@localhost>
date: Wed Feb 02 05:04:17 2000 +0000
description:
bring in latest KAME tree. show kludge entry.
diffstat:
usr.sbin/ifmcstat/ifmcstat.c | 50 ++++++++++++++++++++++++++++++++++++++-----
1 files changed, 44 insertions(+), 6 deletions(-)
diffs (97 lines):
diff -r 05874a2a8dee -r 762e034cfcea usr.sbin/ifmcstat/ifmcstat.c
--- a/usr.sbin/ifmcstat/ifmcstat.c Wed Feb 02 05:02:25 2000 +0000
+++ b/usr.sbin/ifmcstat/ifmcstat.c Wed Feb 02 05:04:17 2000 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: ifmcstat.c,v 1.5 1999/12/09 15:34:19 itojun Exp $ */
+/* $NetBSD: ifmcstat.c,v 1.6 2000/02/02 05:04:17 itojun Exp $ */
/*
* Copyright (C) 1995, 1996, 1997, and 1998 WIDE Project.
@@ -65,6 +65,10 @@
struct nlist nl[] = {
#define N_IFNET 0
{ "_ifnet" },
+#if !(defined(__FreeBSD__) && __FreeBSD__ >= 3)
+#define N_IN6_MK 1
+ { "_in6_mk" },
+#endif
{ "" },
};
@@ -91,6 +95,14 @@
#define KREAD(addr, buf, type) \
kread((u_long)addr, (void *)buf, sizeof(type))
+#ifdef N_IN6_MK
+struct multi6_kludge {
+ LIST_ENTRY(multi6_kludge) mk_entry;
+ struct ifnet *mk_ifp;
+ struct in6_multihead mk_head;
+};
+#endif
+
const char *inet6_n2a(p)
struct in6_addr *p;
{
@@ -179,9 +191,13 @@
struct ifnet *ifp;
{
static char buf[BUFSIZ];
+#if defined(__NetBSD__) || defined(__OpenBSD__)
+ struct ifnet ifnet;
+#endif
#if defined(__NetBSD__) || defined(__OpenBSD__)
- KREAD(ifp->if_xname, buf, IFNAMSIZ);
+ KREAD(ifp, &ifnet, struct ifnet);
+ strncpy(buf, ifnet.if_xname, BUFSIZ);
#else
KREAD(ifp->if_name, buf, IFNAMSIZ);
#endif
@@ -230,13 +246,9 @@
struct sockaddr sa;
struct in6_ifaddr if6a;
struct in6_multi *mc = 0;
-#if defined(__FreeBSD__) && __FreeBSD__ >= 3
struct ifaddr *ifap0;
-#endif /* __FreeBSD__ >= 3 */
-#if defined(__FreeBSD__) && __FreeBSD__ >= 3
ifap0 = ifap;
-#endif /* __FreeBSD__ >= 3 */
while (ifap) {
KREAD(ifap, &ifa, struct ifaddr);
if (ifa.ifa_addr == NULL)
@@ -297,6 +309,32 @@
if (mc)
in6_multilist(mc);
#endif
+#ifdef N_IN6_MK
+ {
+ LIST_HEAD(in6_mktype, multi6_kludge) in6_mk;
+ struct multi6_kludge *mkp, mk;
+ char *nam;
+
+ if (nl[N_IN6_MK].n_value == 0) {
+ printf("symbol %s not found\n", nl[N_IN6_MK].n_name);
+ exit(1);
+ }
+ KREAD(nl[N_IN6_MK].n_value, &in6_mk, struct in6_mktype);
+ KREAD(ifap0, &ifa, struct ifaddr);
+
+ nam = strdup(ifname(ifa.ifa_ifp));
+
+ for (mkp = in6_mk.lh_first; mkp; mkp = mk.mk_entry.le_next) {
+ KREAD(mkp, &mk, struct multi6_kludge);
+ if (strcmp(nam, ifname(mk.mk_ifp)) == 0 && mk.mk_head.lh_first) {
+ printf(" (on kludge entry for %s)\n", nam);
+ in6_multilist(mk.mk_head.lh_first);
+ }
+ }
+
+ free(nam);
+ }
+#endif
}
struct in6_multi *
Home |
Main Index |
Thread Index |
Old Index