Module Name: src
Committed By: is
Date: Sat Jan 30 18:30:33 UTC 2010
Modified Files:
src/sbin/ifconfig: af_atalk.c
Log Message:
Use getnameinfo() for printing AppleTalk addresses. While here, fix
printing of broadcast for this address family (AT broadcast is fixed
node 255 on the local net).
To generate a diff of this commit:
cvs rdiff -u -r1.15 -r1.16 src/sbin/ifconfig/af_atalk.c
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/sbin/ifconfig/af_atalk.c
diff -u src/sbin/ifconfig/af_atalk.c:1.15 src/sbin/ifconfig/af_atalk.c:1.16
--- src/sbin/ifconfig/af_atalk.c:1.15 Fri Aug 1 22:44:17 2008
+++ src/sbin/ifconfig/af_atalk.c Sat Jan 30 18:30:33 2010
@@ -1,4 +1,4 @@
-/* $NetBSD: af_atalk.c,v 1.15 2008/08/01 22:44:17 dyoung Exp $ */
+/* $NetBSD: af_atalk.c,v 1.16 2010/01/30 18:30:33 is Exp $ */
/*
* Copyright (c) 1983, 1993
@@ -31,7 +31,7 @@
#include <sys/cdefs.h>
#ifndef lint
-__RCSID("$NetBSD: af_atalk.c,v 1.15 2008/08/01 22:44:17 dyoung Exp $");
+__RCSID("$NetBSD: af_atalk.c,v 1.16 2010/01/30 18:30:33 is Exp $");
#endif /* not lint */
#include <sys/param.h>
@@ -42,6 +42,8 @@
#include <netatalk/at.h>
+#include <netdb.h>
+
#include <err.h>
#include <errno.h>
#include <string.h>
@@ -177,19 +179,20 @@
}
static void
-sat_print(const char *prefix, const struct sockaddr *sa)
+sat_print1(const char *prefix, const struct sockaddr *sa)
{
- const struct sockaddr_at *sat = satocsat(sa);
+ char buf[40];
+ int rc;
- printf("%s%d.%d", prefix, ntohs(sat->sat_addr.s_net),
- sat->sat_addr.s_node);
+ rc = getnameinfo(sa, sa->sa_len, buf, sizeof(buf), NULL, 0, 0);
+
+ printf("%s%s", prefix, buf);
}
static void
at_status(prop_dictionary_t env, prop_dictionary_t oenv, bool force)
{
struct sockaddr_at *sat;
- struct netrange *nr;
struct ifreq ifr;
int s;
const char *ifname;
@@ -216,10 +219,7 @@
warn("SIOCGIFADDR");
sat = (struct sockaddr_at *)&ifr.ifr_addr;
- nr = (struct netrange *)&sat->sat_zero;
- sat_print("\tatalk ", &ifr.ifr_addr);
- printf(" range %d-%d phase %d",
- ntohs(nr->nr_firstnet), ntohs(nr->nr_lastnet), nr->nr_phase);
+ sat_print1("\tatalk ", &ifr.ifr_addr);
if (flags & IFF_POINTOPOINT) {
estrlcpy(ifr.ifr_name, ifname, sizeof(ifr.ifr_name));
@@ -229,11 +229,13 @@
else
warn("SIOCGIFDSTADDR");
}
- sat_print(" --> ", &ifr.ifr_dstaddr);
+ sat_print1(" --> ", &ifr.ifr_dstaddr);
}
if (flags & IFF_BROADCAST) {
/* note RTAX_BRD overlap with IFF_POINTOPOINT */
- sat_print(" broadcast ", &ifr.ifr_broadaddr);
+ /* note Appletalk broadcast is fixed. */
+ printf(" broadcast %u.%u", ntohs(sat->sat_addr.s_net),
+ ATADDR_BCAST);
}
printf("\n");
}