SOURCES: net-tools-branch.diff (NEW) - diff against 1.60 and curre...
glen
glen at pld-linux.org
Tue Sep 11 21:24:00 CEST 2007
Author: glen Date: Tue Sep 11 19:24:00 2007 GMT
Module: SOURCES Tag: HEAD
---- Log message:
- diff against 1.60 and current cvs
---- Files affected:
SOURCES:
net-tools-branch.diff (NONE -> 1.1) (NEW)
---- Diffs:
================================================================
Index: SOURCES/net-tools-branch.diff
diff -u /dev/null SOURCES/net-tools-branch.diff:1.1
--- /dev/null Tue Sep 11 21:24:00 2007
+++ SOURCES/net-tools-branch.diff Tue Sep 11 21:23:55 2007
@@ -0,0 +1,8261 @@
+--- net-tools-1.60/arp.c 2001-04-08 19:05:05.000000000 +0200
++++ net-tools/arp.c 2005-12-04 04:57:15.000000000 +0200
+@@ -8,7 +8,7 @@
+ * NET-3 Networking Distribution for the LINUX operating
+ * system.
+ *
+- * Version: $Id$
++ * Version: $Id$
+ *
+ * Maintainer: Bernd 'eckes' Eckenfels, <net-tools at lina.inka.de>
+ *
+@@ -100,9 +100,10 @@
+ {
+ char host[128];
+ struct arpreq req;
+- struct sockaddr sa;
++ struct sockaddr_storage ss;
++ struct sockaddr *sa;
+ int flags = 0;
+- int err;
++ int deleted = 0;
+
+ memset((char *) &req, 0, sizeof(req));
+
+@@ -112,12 +113,13 @@
+ return (-1);
+ }
+ safe_strncpy(host, *args, (sizeof host));
+- if (ap->input(0, host, &sa) < 0) {
++ sa = (struct sockaddr *)&ss;
++ if (ap->input(0, host, sa) < 0) {
+ ap->herror(host);
+ return (-1);
+ }
+ /* If a host has more than one address, use the correct one! */
+- memcpy((char *) &req.arp_pa, (char *) &sa, sizeof(struct sockaddr));
++ memcpy((char *) &req.arp_pa, (char *) sa, sizeof(struct sockaddr));
+
+ if (hw_set)
+ req.arp_ha.sa_family = hw->type;
+@@ -148,7 +150,7 @@
+ continue;
+ }
+ if (!strcmp(*args, "dontpub")) {
+-#ifdef HAVE_ATF_DONTPUB
++#ifdef ATF_DONTPUB
+ req.arp_flags |= ATF_DONTPUB;
+ #else
+ ENOSUPP("arp", "ATF_DONTPUB");
+@@ -157,7 +159,7 @@
+ continue;
+ }
+ if (!strcmp(*args, "auto")) {
+-#ifdef HAVE_ATF_MAGIC
++#ifdef ATF_MAGIC
+ req.arp_flags |= ATF_MAGIC;
+ #else
+ ENOSUPP("arp", "ATF_MAGIC");
+@@ -177,11 +179,11 @@
+ usage();
+ if (strcmp(*args, "255.255.255.255") != 0) {
+ strcpy(host, *args);
+- if (ap->input(0, host, &sa) < 0) {
++ if (ap->input(0, host, sa) < 0) {
+ ap->herror(host);
+ return (-1);
+ }
+- memcpy((char *) &req.arp_netmask, (char *) &sa,
++ memcpy((char *) &req.arp_netmask, (char *) sa,
+ sizeof(struct sockaddr));
+ req.arp_flags |= ATF_NETMASK;
+ }
+@@ -190,35 +192,41 @@
+ }
+ usage();
+ }
++
++ // if neighter priv nor pub is given, work on both
+ if (flags == 0)
+ flags = 3;
+
+ strcpy(req.arp_dev, device);
+
+- err = -1;
++ /* unfortuatelly the kernel interface does not allow us to
++ delete private entries anlone, so we need this hack
++ to avoid "not found" errors if we try both. */
++ deleted = 0;
+
+ /* Call the kernel. */
+ if (flags & 2) {
+ if (opt_v)
+- fprintf(stderr, "arp: SIOCDARP(nopub)\n");
+- if ((err = ioctl(sockfd, SIOCDARP, &req) < 0)) {
+- if (errno == ENXIO) {
++ fprintf(stderr, "arp: SIOCDARP(dontpub)\n");
++ if (ioctl(sockfd, SIOCDARP, &req) < 0) {
++ if ((errno == ENXIO) || (errno == ENOENT)) {
+ if (flags & 1)
+- goto nopub;
++ goto dontpub;
+ printf(_("No ARP entry for %s\n"), host);
+ return (-1);
+ }
+- perror("SIOCDARP(priv)");
++ perror("SIOCDARP(dontpub)");
+ return (-1);
+- }
++ } else
++ deleted = 1;
+ }
+- if ((flags & 1) && (err)) {
+- nopub:
++ if (!deleted && (flags & 1)) {
++ dontpub:
+ req.arp_flags |= ATF_PUBL;
+ if (opt_v)
+ fprintf(stderr, "arp: SIOCDARP(pub)\n");
+ if (ioctl(sockfd, SIOCDARP, &req) < 0) {
+- if (errno == ENXIO) {
++ if ((errno == ENXIO) || (errno == ENOENT)) {
+ printf(_("No ARP entry for %s\n"), host);
+ return (-1);
+ }
+@@ -260,7 +268,8 @@
+ {
+ char host[128];
+ struct arpreq req;
+- struct sockaddr sa;
++ struct sockaddr_storage ss;
++ struct sockaddr *sa;
+ int flags;
+
+ memset((char *) &req, 0, sizeof(req));
+@@ -271,12 +280,13 @@
+ return (-1);
+ }
+ safe_strncpy(host, *args++, (sizeof host));
+- if (ap->input(0, host, &sa) < 0) {
++ sa = (struct sockaddr *)&ss;
++ if (ap->input(0, host, sa) < 0) {
+ ap->herror(host);
+ return (-1);
+ }
+ /* If a host has more than one address, use the correct one! */
+- memcpy((char *) &req.arp_pa, (char *) &sa, sizeof(struct sockaddr));
++ memcpy((char *) &req.arp_pa, (char *) sa, sizeof(struct sockaddr));
+
+ /* Fetch the hardware address. */
+ if (*args == NULL) {
+@@ -317,7 +327,7 @@
+ continue;
+ }
+ if (!strcmp(*args, "dontpub")) {
+-#ifdef HAVE_ATF_DONTPUB
++#ifdef ATF_DONTPUB
+ flags |= ATF_DONTPUB;
+ #else
+ ENOSUPP("arp", "ATF_DONTPUB");
+@@ -326,7 +336,7 @@
+ continue;
+ }
+ if (!strcmp(*args, "auto")) {
+-#ifdef HAVE_ATF_MAGIC
++#ifdef ATF_MAGIC
+ flags |= ATF_MAGIC;
+ #else
+ ENOSUPP("arp", "ATF_MAGIC");
+@@ -346,11 +356,11 @@
+ usage();
+ if (strcmp(*args, "255.255.255.255") != 0) {
+ strcpy(host, *args);
+- if (ap->input(0, host, &sa) < 0) {
++ if (ap->input(0, host, sa) < 0) {
+ ap->herror(host);
+ return (-1);
+ }
+- memcpy((char *) &req.arp_netmask, (char *) &sa,
++ memcpy((char *) &req.arp_netmask, (char *) sa,
+ sizeof(struct sockaddr));
+ flags |= ATF_NETMASK;
+ }
+@@ -445,11 +455,11 @@
+ strcat(flags, "M");
+ if (arp_flags & ATF_PUBL)
+ strcat(flags, "P");
+-#ifdef HAVE_ATF_MAGIC
++#ifdef ATF_MAGIC
+ if (arp_flags & ATF_MAGIC)
+ strcat(flags, "A");
+ #endif
+-#ifdef HAVE_ATF_DONTPUB
++#ifdef ATF_DONTPUB
+ if (arp_flags & ATF_DONTPUB)
+ strcat(flags, "!");
+ #endif
+@@ -463,7 +473,7 @@
+
+ if (!(arp_flags & ATF_COM)) {
+ if (arp_flags & ATF_PUBL)
+- printf("%-8.8s%-20.20s", "*", "*");
++ printf("%-8.8s%-20.20s", "*", _("<from_interface>"));
+ else
+ printf("%-8.8s%-20.20s", "", _("(incomplete)"));
+ } else {
+@@ -486,7 +496,7 @@
+
+ if (!(arp_flags & ATF_COM)) {
+ if (arp_flags & ATF_PUBL)
+- printf("* ");
++ printf("<from_interface> ");
+ else
+ printf(_("<incomplete> "));
+ } else {
+@@ -499,12 +509,12 @@
+ if (arp_flags & ATF_PERM)
+ printf("PERM ");
+ if (arp_flags & ATF_PUBL)
+- printf("PUP ");
+-#ifdef HAVE_ATF_MAGIC
++ printf("PUB ");
++#ifdef ATF_MAGIC
+ if (arp_flags & ATF_MAGIC)
+ printf("AUTO ");
+ #endif
+-#ifdef HAVE_ATF_DONTPUB
++#ifdef ATF_DONTPUB
+ if (arp_flags & ATF_DONTPUB)
+ printf("DONTPUB ");
+ #endif
+@@ -519,7 +529,8 @@
+ static int arp_show(char *name)
+ {
+ char host[100];
+- struct sockaddr sa;
++ struct sockaddr_storage ss;
++ struct sockaddr *sa;
+ char ip[100];
+ char hwa[100];
+ char mask[100];
+@@ -532,14 +543,15 @@
+
+ host[0] = '\0';
+
++ sa = (struct sockaddr *)&ss;
+ if (name != NULL) {
+ /* Resolve the host name. */
+ safe_strncpy(host, name, (sizeof host));
+- if (ap->input(0, host, &sa) < 0) {
++ if (ap->input(0, host, sa) < 0) {
+ ap->herror(host);
+ return (-1);
+ }
+- safe_strncpy(host, ap->sprint(&sa, 1), sizeof(host));
++ safe_strncpy(host, ap->sprint(sa, 1), sizeof(host));
+ }
+ /* Open the PROCps kernel table. */
+ if ((fp = fopen(_PATH_PROCNET_ARP, "r")) == NULL) {
+@@ -575,10 +587,10 @@
+ if (opt_n)
+ hostname = "?";
+ else {
+- if (ap->input(0, ip, &sa) < 0)
++ if (ap->input(0, ip, sa) < 0)
+ hostname = ip;
+ else
+- hostname = ap->sprint(&sa, opt_n | 0x8000);
++ hostname = ap->sprint(sa, opt_n | 0x8000);
+ if (strcmp(hostname, ip) == 0)
+ hostname = "?";
+ }
+@@ -612,11 +624,10 @@
+ static void usage(void)
+ {
+ fprintf(stderr, _("Usage:\n arp [-vn] [<HW>] [-i <if>] [-a] [<hostname>] <-Display ARP cache\n"));
+- fprintf(stderr, _(" arp [-v] [-i <if>] -d <hostname> [pub][nopub] <-Delete ARP entry\n"));
+- fprintf(stderr, _(" arp [-vnD] [<HW>] [-i <if>] -f [<filename>] <-Add entry from file\n"));
+- fprintf(stderr, _(" arp [-v] [<HW>] [-i <if>] -s <hostname> <hwaddr> [temp][nopub] <-Add entry\n"));
+- fprintf(stderr, _(" arp [-v] [<HW>] [-i <if>] -s <hostname> <hwaddr> [netmask <nm>] pub <-''-\n"));
+- fprintf(stderr, _(" arp [-v] [<HW>] [-i <if>] -Ds <hostname> <if> [netmask <nm>] pub <-''-\n\n"));
++ fprintf(stderr, _(" arp [-v] [-i <if>] -d <host> [pub] <-Delete ARP entry\n"));
++ fprintf(stderr, _(" arp [-vnD] [<HW>] [-i <if>] -f [<filename>] <-Add entry from file\n"));
++ fprintf(stderr, _(" arp [-v] [<HW>] [-i <if>] -s <host> <hwaddr> [temp] <-Add entry\n"));
++ fprintf(stderr, _(" arp [-v] [<HW>] [-i <if>] -Ds <host> <if> [netmask <nm>] pub <-''-\n\n"));
+
+ fprintf(stderr, _(" -a display (all) hosts in alternative (BSD) style\n"));
+ fprintf(stderr, _(" -s, --set set a new ARP entry\n"));
+--- net-tools-1.60/config.in 2000-05-21 16:32:12.000000000 +0200
++++ net-tools/config.in 2004-06-04 03:06:50.000000000 +0300
+@@ -49,16 +49,16 @@
+ *
+ bool 'UNIX protocol family' HAVE_AFUNIX y
+ bool 'INET (TCP/IP) protocol family' HAVE_AFINET y
+-bool 'INET6 (IPv6) protocol family' HAVE_AFINET6 n
++bool 'INET6 (IPv6) protocol family' HAVE_AFINET6 y
+ bool 'Novell IPX/SPX protocol family' HAVE_AFIPX y
+ bool 'Appletalk DDP protocol family' HAVE_AFATALK y
+ bool 'AX25 (packet radio) protocol family' HAVE_AFAX25 y
+ bool 'NET/ROM (packet radio) protocol family' HAVE_AFNETROM y
+-bool 'Rose (packet radio) protocol family' HAVE_AFROSE n
++bool 'Rose (packet radio) protocol family' HAVE_AFROSE y
+ bool 'X.25 (CCITT) protocol family' HAVE_AFX25 y
+-bool 'Econet protocol family' HAVE_AFECONET n
++bool 'Econet protocol family' HAVE_AFECONET y
+ bool 'DECnet protocol family' HAVE_AFDECnet n
+-bool 'Ash protocol family' HAVE_AFASH n
++bool 'Ash protocol family' HAVE_AFASH y
+ *
+ *
+ * Device Hardware types.
+@@ -71,21 +71,23 @@
+ bool 'STRIP (Metricom radio) support' HAVE_HWSTRIP y
+ bool 'Token ring (generic) support' HAVE_HWTR y
+ bool 'AX25 (packet radio) support' HAVE_HWAX25 y
+-bool 'Rose (packet radio) support' HAVE_HWROSE n
++bool 'Rose (packet radio) support' HAVE_HWROSE y
+ bool 'NET/ROM (packet radio) support' HAVE_HWNETROM y
+ bool 'X.25 (generic) support' HAVE_HWX25 y
+ bool 'DLCI/FRAD (frame relay) support' HAVE_HWFR y
+-bool 'SIT (IPv6-in-IPv4) support' HAVE_HWSIT n
+-bool 'FDDI (generic) support' HAVE_HWFDDI n
+-bool 'HIPPI (generic) support' HAVE_HWHIPPI n
+-bool 'Ash hardware support' HAVE_HWASH n
+-bool '(Cisco)-HDLC/LAPB support' HAVE_HWHDLCLAPB n
++bool 'SIT (IPv6-in-IPv4) support' HAVE_HWSIT y
++bool 'FDDI (generic) support' HAVE_HWFDDI y
++bool 'HIPPI (generic) support' HAVE_HWHIPPI y
++bool 'Ash hardware support' HAVE_HWASH y
++bool '(Cisco)-HDLC/LAPB support' HAVE_HWHDLCLAPB y
+ bool 'IrDA support' HAVE_HWIRDA y
+-bool 'Econet hardware support' HAVE_HWEC n
++bool 'Econet hardware support' HAVE_HWEC y
++bool 'Generic EUI-64 hardware support' HAVE_HWEUI64 y
++
+ *
+ *
+ * Other Features.
+ *
+-bool 'IP Masquerading support' HAVE_FW_MASQUERADE n
+-bool 'Build iptunnel and ipmaddr' HAVE_IP_TOOLS n
+-bool 'Build mii-tool' HAVE_MII n
++bool 'IP Masquerading support' HAVE_FW_MASQUERADE y
++bool 'Build iptunnel and ipmaddr' HAVE_IP_TOOLS y
++bool 'Build mii-tool' HAVE_MII y
+--- net-tools-1.60/hostname.c 2001-04-08 19:04:23.000000000 +0200
++++ net-tools/hostname.c 2003-10-12 00:08:10.000000000 +0300
+@@ -9,20 +9,19 @@
+ * dnsdmoainname
+ * nisdomainname {name|-F file}
+ *
+- * Version: hostname 1.96 (1996-02-18)
++ * Version: hostname 1.101 (2003-10-11)
+ *
+ * Author: Peter Tobias <tobias at et-inf.fho-emden.de>
+ *
+ * Changes:
+- * {1.90} Peter Tobias : Added -a and -i options.
+- * {1.91} Bernd Eckenfels : -v,-V rewritten, long_opts
+- * (major rewrite), usage.
+- *960120 {1.95} Bernd Eckenfels : -y/nisdomainname - support for get/
+- * setdomainname added
+- *960218 {1.96} Bernd Eckenfels : netinet/in.h added
+- *980629 {1.97} Arnaldo Carvalho de Melo : gettext instead of catgets for i18n
+- *20000213 {1.99} Arnaldo Carvalho de Melo : fixed some i18n strings
++ * {1.90} Peter Tobias : Added -a and -i options.
++ * {1.91} Bernd Eckenfels : -v,-V rewritten, long_opts (major rewrite), usage.
++ *19960120 {1.95} Bernd Eckenfels : -y/nisdomainname - support for get/setdomainname added
++ *19960218 {1.96} Bernd Eckenfels : netinet/in.h added
++ *19980629 {1.97} Arnaldo Carvalho de Melo : gettext instead of catgets for i18n
++ *20000213 {1.99} Arnaldo Carvalho de Melo : fixed some i18n strings
+ *20010404 {1.100} Arnaldo Carvalho de Melo: use setlocale
++ *20031011 {1.101} Maik Broemme: gcc 3.x fixes (default: break)
+ *
+ * This program is free software; you can redistribute it
+ * and/or modify it under the terms of the GNU General
+@@ -31,7 +30,9 @@
+ * your option) any later version.
+ */
+ #include <stdio.h>
++#include <stdlib.h>
+ #include <unistd.h>
++#include <stdlib.h>
+ #include <getopt.h>
+ #include <string.h>
+ #include <netdb.h>
+@@ -78,6 +79,7 @@
+ fprintf(stderr, _("%s: name too long\n"), program_name);
+ break;
+ default:
++ break;
+ }
+ exit(1);
+ }
+@@ -97,7 +99,6 @@
+ case EINVAL:
+ fprintf(stderr, _("%s: name too long\n"), program_name);
+ break;
+- default:
+ }
+ exit(1);
+ };
+@@ -116,7 +117,6 @@
+ case EINVAL:
+ fprintf(stderr, _("%s: name too long\n"), program_name);
+ break;
+- default:
+ }
+ exit(1);
+ };
+@@ -173,7 +173,6 @@
+ *p = '\0';
+ printf("%s\n", hp->h_name);
+ break;
+- default:
+ }
+ }
+
+@@ -326,11 +325,12 @@
+ break;
+ case 'V':
+ version();
++ break; // not reached
+ case '?':
+ case 'h':
+ default:
+ usage();
+-
++ break; // not reached
+ };
+
+
+--- net-tools-1.60/ifconfig.c 2001-04-13 20:25:18.000000000 +0200
++++ net-tools/ifconfig.c 2002-12-10 02:56:41.000000000 +0200
+@@ -3,7 +3,7 @@
+ * that either displays or sets the characteristics of
+ * one or more of the system's networking interfaces.
+ *
+- * Version: $Id$
++ * Version: $Id$
+ *
+ * Author: Fred N. van Kempen, <waltje at uwalt.nl.mugnet.org>
+ * and others. Copyright 1993 MicroWalt Corporation
+@@ -88,7 +88,6 @@
+ char *Release = RELEASE, *Version = "ifconfig 1.42 (2001-04-13)";
+
+ int opt_a = 0; /* show all interfaces */
+-int opt_i = 0; /* show the statistics */
+ int opt_v = 0; /* debugging output flag */
+
+ int addr_family = 0; /* currently selected AF */
+@@ -105,7 +104,7 @@
+ int res;
+
+ if (ife_short)
+- printf(_("Iface MTU Met RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR Flg\n"));
++ printf(_("Iface MTU Met RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR Flg\n"));
+
+ if (!ifname) {
+ res = for_all_interfaces(do_if_print, &opt_a);
+@@ -127,7 +126,7 @@
+
+ safe_strncpy(ifr.ifr_name, ifname, IFNAMSIZ);
+ if (ioctl(skfd, SIOCGIFFLAGS, &ifr) < 0) {
+- fprintf(stderr, _("%s: unknown interface: %s\n"),
++ fprintf(stderr, _("%s: ERROR while getting interface flags: %s\n"),
+ ifname, strerror(errno));
+ return (-1);
+ }
+@@ -159,7 +158,7 @@
+
+ safe_strncpy(ifr.ifr_name, ifname, IFNAMSIZ);
+ if (ioctl(fd, SIOCGIFFLAGS, &ifr) < 0) {
+- fprintf(stderr, _("%s: unknown interface: %s\n"),
++ fprintf(stderr, _("%s: ERROR while getting interface flags: %s\n"),
+ ifname, strerror(errno));
+ return -1;
+ }
+@@ -172,9 +171,35 @@
+ return (0);
+ }
+
++/** test is a specified flag is set */
++static int test_flag(char *ifname, short flags)
++{
++ struct ifreq ifr;
++ int fd;
++
++ if (strchr(ifname, ':')) {
++ /* This is a v4 alias interface. Downing it via a socket for
++ another AF may have bad consequences. */
++ fd = get_socket_for_af(AF_INET);
++ if (fd < 0) {
++ fprintf(stderr, _("No support for INET on this system.\n"));
++ return -1;
++ }
++ } else
++ fd = skfd;
++
++ safe_strncpy(ifr.ifr_name, ifname, IFNAMSIZ);
++ if (ioctl(fd, SIOCGIFFLAGS, &ifr) < 0) {
++ fprintf(stderr, _("%s: ERROR while testing interface flags: %s\n"),
++ ifname, strerror(errno));
++ return -1;
++ }
++ return (ifr.ifr_flags & flags);
++}
++
+ static void usage(void)
+ {
+- fprintf(stderr, _("Usage:\n ifconfig [-a] [-i] [-v] [-s] <interface> [[<AF>] <address>]\n"));
++ fprintf(stderr, _("Usage:\n ifconfig [-a] [-v] [-s] <interface> [[<AF>] <address>]\n"));
+ #if HAVE_AFINET
+ fprintf(stderr, _(" [add <address>[/<prefixlen>]]\n"));
+ fprintf(stderr, _(" [del <address>[/<prefixlen>]]\n"));
+@@ -208,7 +233,7 @@
+ static void version(void)
+ {
+ fprintf(stderr, "%s\n%s\n", Release, Version);
+- exit(0);
++ exit(E_USAGE);
+ }
+
+ static int set_netmask(int skfd, struct ifreq *ifr, struct sockaddr *sa)
+@@ -222,18 +247,19 @@
+ strerror(errno));
+ err = 1;
+ }
+- return 0;
++ return err;
+ }
+
+ int main(int argc, char **argv)
+ {
+ struct sockaddr sa;
++ struct sockaddr samask;
+ struct sockaddr_in sin;
+ char host[128];
+ struct aftype *ap;
+ struct hwtype *hw;
+ struct ifreq ifr;
+- int goterr = 0, didnetmask = 0;
++ int goterr = 0, didnetmask = 0, neednetmask=0;
+ char **spp;
+ int fd;
+ #if HAVE_AFINET6
+@@ -388,6 +414,8 @@
+ }
+ if (!strcmp(*spp, "-promisc")) {
+ goterr |= clr_flag(ifr.ifr_name, IFF_PROMISC);
++ if (test_flag(ifr.ifr_name, IFF_PROMISC) > 0)
++ fprintf(stderr, _("Warning: Interface %s still in promisc mode... maybe other application is running?\n"), ifr.ifr_name);
+ spp++;
+ continue;
+ }
+@@ -398,6 +426,8 @@
+ }
+ if (!strcmp(*spp, "-multicast")) {
+ goterr |= clr_flag(ifr.ifr_name, IFF_MULTICAST);
++ if (test_flag(ifr.ifr_name, IFF_MULTICAST) > 0)
++ fprintf(stderr, _("Warning: Interface %s still in MULTICAST mode.\n"), ifr.ifr_name);
+ spp++;
+ continue;
+ }
+@@ -408,6 +438,8 @@
+ }
+ if (!strcmp(*spp, "-allmulti")) {
+ goterr |= clr_flag(ifr.ifr_name, IFF_ALLMULTI);
++ if (test_flag(ifr.ifr_name, IFF_MULTICAST) > 0)
++ fprintf(stderr, _("Warning: Interface %s still in ALLMULTI mode.\n"), ifr.ifr_name);
+ spp++;
+ continue;
+ }
+@@ -430,6 +462,8 @@
+ if (!strcmp(*spp, "-dynamic")) {
+ goterr |= clr_flag(ifr.ifr_name, IFF_DYNAMIC);
+ spp++;
++ if (test_flag(ifr.ifr_name, IFF_MULTICAST) > 0)
++ fprintf(stderr, _("Warning: Interface %s still in DYNAMIC mode.\n"), ifr.ifr_name);
+ continue;
+ }
+ #endif
+@@ -486,6 +520,8 @@
+
+ if (!strcmp(*spp, "-broadcast")) {
+ goterr |= clr_flag(ifr.ifr_name, IFF_BROADCAST);
++ if (test_flag(ifr.ifr_name, IFF_MULTICAST) > 0)
++ fprintf(stderr, _("Warning: Interface %s still in BROADCAST mode.\n"), ifr.ifr_name);
+ spp++;
+ continue;
+ }
+@@ -493,7 +529,10 @@
<<Diff was trimmed, longer than 597 lines>>
More information about the pld-cvs-commit
mailing list