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