]> git.ipfire.org Git - thirdparty/dhcp.git/commitdiff
Print send_packet errors in send_packet, not in caller.
authorTed Lemon <source@isc.org>
Tue, 23 Feb 1999 17:43:38 +0000 (17:43 +0000)
committerTed Lemon <source@isc.org>
Tue, 23 Feb 1999 17:43:38 +0000 (17:43 +0000)
client/dhclient.c
common/bpf.c
common/dlpi.c
common/lpf.c
common/nit.c
common/raw.c
common/socket.c
common/upf.c
relay/dhcrelay.c
server/bootp.c

index a31ddf13dae8d3c9290bd164f5fdb832ab0fa3e1..c47841a512f08617c07daac5898b1b99eace6387 100644 (file)
@@ -56,7 +56,7 @@
 
 #ifndef lint
 static char ocopyright[] =
-"$Id: dhclient.c,v 1.44.2.20 1999/02/19 18:30:19 mellon Exp $ Copyright (c) 1995, 1996, 1997, 1998, 1999 The Internet Software Consortium.  All rights reserved.\n";
+"$Id: dhclient.c,v 1.44.2.21 1999/02/23 17:42:52 mellon Exp $ Copyright (c) 1995, 1996, 1997, 1998, 1999 The Internet Software Consortium.  All rights reserved.\n";
 #endif /* not lint */
 
 #include "dhcpd.h"
@@ -1049,8 +1049,6 @@ void send_discover (ipp)
                              ip -> client -> packet_length,
                              inaddr_any, &sockaddr_broadcast,
                              (struct hardware *)0);
-       if (result < 0)
-               warn ("send_packet: %m");
 
        add_timeout (cur_time + ip -> client -> interval, send_discover, ip);
 }
@@ -1303,9 +1301,6 @@ void send_request (ipp)
                                      from, &destination,
                                      (struct hardware *)0);
 
-       if (result < 0)
-               warn ("send_packet: %m");
-
        add_timeout (cur_time + ip -> client -> interval,
                     send_request, ip);
 }
@@ -1327,8 +1322,6 @@ void send_decline (ipp)
                              ip -> client -> packet_length,
                              inaddr_any, &sockaddr_broadcast,
                              (struct hardware *)0);
-       if (result < 0)
-               warn ("send_packet: %m");
 }
 
 void send_release (ipp)
@@ -1348,8 +1341,6 @@ void send_release (ipp)
                              ip -> client -> packet_length,
                              inaddr_any, &sockaddr_broadcast,
                              (struct hardware *)0);
-       if (result < 0)
-               warn ("send_packet: %m");
 }
 
 void make_discover (ip, lease)
index ba42a43903cd284806be5f280c5012e273896d74..96ca0033687c0b6784c8d62ecfc6a0492b0645b2 100644 (file)
@@ -42,7 +42,7 @@
 
 #ifndef lint
 static char copyright[] =
-"$Id: bpf.c,v 1.19.2.6 1999/02/09 04:46:59 mellon Exp $ Copyright (c) 1995, 1996, 1998, 1999 The Internet Software Consortium.  All rights reserved.\n";
+"$Id: bpf.c,v 1.19.2.7 1999/02/23 17:35:45 mellon Exp $ Copyright (c) 1995, 1996, 1998, 1999 The Internet Software Consortium.  All rights reserved.\n";
 #endif /* not lint */
 
 #include "dhcpd.h"
@@ -290,7 +290,10 @@ ssize_t send_packet (interface, packet, raw, len, from, to, hto)
        iov [1].iov_base = (char *)raw;
        iov [1].iov_len = len;
 
-       return writev(interface -> wfdesc, iov, 2);
+       result = writev(interface -> wfdesc, iov, 2);
+       if (result < 0)
+               warn ("send_packet: %m");
+       return result;
 }
 #endif /* USE_BPF_SEND */
 
index bf75c4383864352c7e2debb5d5d875ce1df68e3e..7ff1a7c61de6d25d35a940ee9f79d6d39c84b2d3 100644 (file)
@@ -3,7 +3,7 @@
    Data Link Provider Interface (DLPI) network interface code. */
 
 /*
- * Copyright (c) 1998 The Internet Software Consortium.
+ * Copyright (c) 1998, 1999 The Internet Software Consortium.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -461,7 +461,7 @@ ssize_t send_packet (interface, packet, raw, len, from, to, hto)
        unsigned char dstaddr [DLPI_MAXDLADDR];
        unsigned addrlen;
        int saplen;
-       int rslt;
+       int result;
 
        if (!strcmp (interface -> name, "fallback"))
                return send_fallback (interface, packet, raw,
@@ -482,7 +482,7 @@ ssize_t send_packet (interface, packet, raw, len, from, to, hto)
        dbuflen += len;
 
 #ifdef USE_DLPI_RAW
-       rslt = write (interface -> wfdesc, dbuf, dbuflen);
+       result = write (interface -> wfdesc, dbuf, dbuflen);
 #else
        /* XXX: Assumes ethernet, with two byte SAP */
        sap [0] = 0x08;         /* ETHERTYPE_IP, high byte */
@@ -507,10 +507,12 @@ ssize_t send_packet (interface, packet, raw, len, from, to, hto)
        addrlen = interface -> hw_address.hlen + ABS (saplen);
 
        /* Send the packet down the wire... */
-       rslt = dlpiunitdatareq (interface -> wfdesc, dstaddr, addrlen,
-                               0, 0, dbuf, dbuflen);
+       result = dlpiunitdatareq (interface -> wfdesc, dstaddr, addrlen,
+                                 0, 0, dbuf, dbuflen);
 #endif
-       return rslt;
+       if (result < 0)
+               warn ("send_packet: %m");
+       return result;
 }
 #endif /* USE_DLPI_SEND */
 
@@ -531,7 +533,6 @@ ssize_t receive_packet (interface, buf, len, from, hfrom)
        int length = 0;
        int offset = 0;
        int bufix = 0;
-       int rslt;
        
 #ifdef USE_DLPI_RAW
        length = read (interface -> rfdesc, dbuf, sizeof (dbuf));
@@ -1052,7 +1053,7 @@ static int dlpiunitdataind (fd, daddr, daddrlen,
        union DL_primitives *dlp;
        struct strbuf ctl, data;
        int flags = 0;
-       int rslt;
+       int result;
 
        /* Set up the msg_buf structure... */
        dlp = (union DL_primitives *)buf;
@@ -1066,9 +1067,9 @@ static int dlpiunitdataind (fd, daddr, daddrlen,
        data.len = 0;
        data.buf = (char *)dbuf;
        
-       rslt = getmsg (fd, &ctl, &data, &flags);
+       result = getmsg (fd, &ctl, &data, &flags);
        
-       if (rslt != 0) {
+       if (result != 0) {
                return -1;
        }
        
@@ -1136,7 +1137,7 @@ static int strgetmsg (fd, ctlp, datap, flagsp, caller)
        int *flagsp;
        int fd;
 {
-       int rslt;
+       int result;
 #ifdef USE_POLL
        struct pollfd pfd;
        int count;
@@ -1190,8 +1191,8 @@ static int strgetmsg (fd, ctlp, datap, flagsp, caller)
         * Set flags argument and issue getmsg ().
         */
        *flagsp = 0;
-       if ((rslt = getmsg (fd, ctlp, datap, flagsp)) < 0) {
-               return rslt;
+       if ((result = getmsg (fd, ctlp, datap, flagsp)) < 0) {
+               return result;
        }
 
 #ifndef USE_POLL
@@ -1207,7 +1208,7 @@ static int strgetmsg (fd, ctlp, datap, flagsp, caller)
        /*
         * Check for MOREDATA and/or MORECTL.
         */
-       if (rslt & (MORECTL|MOREDATA)) {
+       if (result & (MORECTL|MOREDATA)) {
                return -1;
        }
 
index 7c6ff74d628e2730440acdedecd8b30727c962ef..f7ac8ea1a576d203548cbdea2418a27985d754b0 100644 (file)
@@ -43,7 +43,7 @@
 
 #ifndef lint
 static char copyright[] =
-"$Id: lpf.c,v 1.1.2.4 1999/02/09 04:51:05 mellon Exp $ Copyright (c) 1995, 1996, 1998, 1999 The Internet Software Consortium.  All rights reserved.\n";
+"$Id: lpf.c,v 1.1.2.5 1999/02/23 17:35:45 mellon Exp $ Copyright (c) 1995, 1996, 1998, 1999 The Internet Software Consortium.  All rights reserved.\n";
 #endif /* not lint */
 
 #include "dhcpd.h"
@@ -197,6 +197,7 @@ ssize_t send_packet (interface, packet, raw, len, from, to, hto)
        int bufp = 0;
        unsigned char buf [1500];
        struct sockaddr sa;
+       int result;
 
        if (!strcmp (interface -> name, "fallback"))
                return send_fallback (interface, packet, raw,
@@ -216,8 +217,11 @@ ssize_t send_packet (interface, packet, raw, len, from, to, hto)
        strncpy (sa.sa_data,
                 (const char *)interface -> ifp, sizeof sa.sa_data);
 
-       return sendto (interface -> wfdesc, buf, bufp + len, 0,
-                      &sa, sizeof sa);
+       result = sendto (interface -> wfdesc, buf, bufp + len, 0,
+                        &sa, sizeof sa);
+       if (result < 0)
+               warn ("send_packet: %m");
+       return result;
 }
 #endif /* USE_LPF_SEND */
 
index 1801bb9f35799b1781428fbcc24b31073572f273..a2162abb7ecefce52deb27fa19e4a66037440fcc 100644 (file)
@@ -4,7 +4,7 @@
    with one crucial tidbit of help from Stu Grossmen. */
 
 /*
- * Copyright (c) 1996 The Internet Software Consortium.
+ * Copyright (c) 1996, 1998, 1999 The Internet Software Consortium.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -42,7 +42,7 @@
 
 #ifndef lint
 static char copyright[] =
-"$Id: nit.c,v 1.15.2.1 1998/12/20 18:27:44 mellon Exp $ Copyright (c) 1996 The Internet Software Consortium.  All rights reserved.\n";
+"$Id: nit.c,v 1.15.2.2 1999/02/23 17:35:46 mellon Exp $ Copyright (c) 1996 The Internet Software Consortium.  All rights reserved.\n";
 #endif /* not lint */
 
 #include "dhcpd.h"
@@ -263,6 +263,7 @@ ssize_t send_packet (interface, packet, raw, len, from, to, hto)
        struct strbuf ctl, data;
        int hw_end;
        struct sockaddr_in foo;
+       int result;
 
        if (!strcmp (interface -> name, "fallback"))
                return send_fallback (interface, packet, raw,
@@ -298,7 +299,10 @@ ssize_t send_packet (interface, packet, raw, len, from, to, hto)
        data.buf = (char *)&buf [hw_end];
        data.maxlen = data.len = bufp + len - hw_end;
 
-       return putmsg (interface -> wfdesc, &ctl, &data, 0);
+       result = putmsg (interface -> wfdesc, &ctl, &data, 0);
+       if (result < 0)
+               warn ("send_packet: %m");
+       return result;
 }
 #endif /* USE_NIT_SEND */
 
index 973ede13b8f949bb62b408339125b507e1e8b171..dd095d9d832551370cb29a07217f8ca977e0881f 100644 (file)
@@ -16,7 +16,7 @@
    Sigh. */
 
 /*
- * Copyright (c) 1995, 1996 The Internet Software Consortium.
+ * Copyright (c) 1995, 1996, 1997, 1999 The Internet Software Consortium.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -54,7 +54,7 @@
 
 #ifndef lint
 static char copyright[] =
-"$Id: raw.c,v 1.11 1997/10/20 21:47:14 mellon Exp $ Copyright (c) 1995, 1996 The Internet Software Consortium.  All rights reserved.\n";
+"$Id: raw.c,v 1.11.2.1 1999/02/23 17:35:46 mellon Exp $ Copyright (c) 1995, 1996, 1997, 1999 The Internet Software Consortium.  All rights reserved.\n";
 #endif /* not lint */
 
 #include "dhcpd.h"
@@ -115,6 +115,7 @@ size_t send_packet (interface, packet, raw, len, from, to, hto)
        unsigned char buf [256];
        int bufp = 0;
        struct iovec iov [2];
+       int result;
 
        /* Assemble the headers... */
        assemble_udp_ip_header (interface, buf, &bufp, from.s_addr,
@@ -127,6 +128,9 @@ size_t send_packet (interface, packet, raw, len, from, to, hto)
        iov [1].iov_base = (char *)raw;
        iov [1].iov_len = len;
 
-       return writev(interface -> wfdesc, iov, 2);
+       result = writev(interface -> wfdesc, iov, 2);
+       if (result < 0)
+               warn ("send_packet: %m");
+       return result;
 }
 #endif /* USE_SOCKET_SEND */
index f1c3dc4af98f3e9e6d832ba3177d1b9689ab9e12..c28eb4fbe3ca489867594c026648b66ce4841c31 100644 (file)
@@ -50,7 +50,7 @@
 
 #ifndef lint
 static char copyright[] =
-"$Id: socket.c,v 1.26.2.8 1999/02/19 18:17:34 mellon Exp $ Copyright (c) 1995, 1996, 1997, 1998, 1999 The Internet Software Consortium.  All rights reserved.\n";
+"$Id: socket.c,v 1.26.2.9 1999/02/23 17:35:46 mellon Exp $ Copyright (c) 1995, 1996, 1997, 1998, 1999 The Internet Software Consortium.  All rights reserved.\n";
 #endif /* not lint */
 
 #include "dhcpd.h"
@@ -206,6 +206,12 @@ ssize_t send_packet (interface, packet, raw, len, from, to, hto)
                  errno == ECONNREFUSED) &&
                 retry++ < 10);
 #endif
+       if (result < 0) {
+               warn ("send_packet: %m");
+               if (errno == ENETUNREACH)
+                       warn ("send_packet: please consult README file %s",
+                             "regarding broadcast address.");
+       }
        return result;
 }
 #endif /* USE_SOCKET_SEND */
index 7da9aff62ee857aa61b8aab5b6c36c635e8ef63f..811d33df2ead66894f5b8dbf1ea17fec8620a6d7 100644 (file)
@@ -3,8 +3,8 @@
    Ultrix PacketFilter interface code.
 
 /*
- * Copyright (c) 1995, 1996, 1997 The Internet Software Consortium.
- * All rights reserved.
+ * Copyright (c) 1995, 1996, 1997, 1998, 1999
+ * The Internet Software Consortium.   All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
@@ -42,7 +42,7 @@
 
 #ifndef lint
 static char copyright[] =
-"$Id: upf.c,v 1.3.2.1 1998/12/20 18:29:48 mellon Exp $ Copyright (c) 1995, 1996 The Internet Software Consortium.  All rights reserved.\n";
+"$Id: upf.c,v 1.3.2.2 1999/02/23 17:35:47 mellon Exp $ Copyright (c) 1995, 1996, 1997, 1998, 1999 The Internet Software Consortium.  All rights reserved.\n";
 #endif /* not lint */
 
 #include "dhcpd.h"
@@ -231,6 +231,7 @@ ssize_t send_packet (interface, packet, raw, len, from, to, hto)
        int bufp = 0;
        unsigned char buf [256];
        struct iovec iov [2];
+       int result;
 
        if (!strcmp (interface -> name, "fallback"))
                return send_fallback (interface, packet, raw,
@@ -248,7 +249,10 @@ ssize_t send_packet (interface, packet, raw, len, from, to, hto)
        iov [1].iov_base = (char *)raw;
        iov [1].iov_len = len;
 
-       return writev(interface -> wfdesc, iov, 2);
+       result = writev(interface -> wfdesc, iov, 2);
+       if (result < 0)
+               warn ("send_packet: %m");
+       return result;
 }
 #endif /* USE_UPF_SEND */
 
index cda4be6ce7d868aec511bf2760c1c6be25013c14..ed000b98519fcce02137395dca303732c59707cc 100644 (file)
@@ -42,7 +42,7 @@
 
 #ifndef lint
 static char ocopyright [] =
-"$Id: dhcrelay.c,v 1.9.2.15 1999/02/19 18:32:46 mellon Exp $ Copyright (c) 1997, 1998, 1999 The Internet Software Consortium.  All rights reserved.\n";
+"$Id: dhcrelay.c,v 1.9.2.16 1999/02/23 17:40:10 mellon Exp $ Copyright (c) 1997, 1998, 1999 The Internet Software Consortium.  All rights reserved.\n";
 #endif /* not lint */
 
 #include "dhcpd.h"
@@ -293,12 +293,10 @@ void relay (ip, packet, length, from_port, from, hfrom)
                        return;
                }
 
-               if (send_packet (out,
-                                (struct packet *)0,
-                                packet, length, out -> primary_address,
-                                &to, &hto) < 0)
-                       debug ("sendpkt: %m");
-               else
+               if (!send_packet (out,
+                                 (struct packet *)0,
+                                 packet, length, out -> primary_address,
+                                 &to, &hto) < 0)
                        debug ("forwarded BOOTREPLY for %s to %s",
                               print_hw_addr (packet -> htype, packet -> hlen,
                                              packet -> chaddr),
@@ -323,13 +321,11 @@ void relay (ip, packet, length, from_port, from, hfrom)
        /* Otherwise, it's a BOOTREQUEST, so forward it to all the
           servers. */
        for (sp = servers; sp; sp = sp -> next) {
-               if (send_packet ((fallback_interface
-                                 ? fallback_interface : interfaces),
-                                (struct packet *)0,
-                                packet, length, ip -> primary_address,
-                                &sp -> to, (struct hardware *)0) < 0) {
-                       debug ("send_packet: %m");
-               } else {
+               if (!send_packet ((fallback_interface
+                                  ? fallback_interface : interfaces),
+                                 (struct packet *)0,
+                                 packet, length, ip -> primary_address,
+                                 &sp -> to, (struct hardware *)0) < 0) {
                        debug ("forwarded BOOTREQUEST for %s to %s",
                               print_hw_addr (packet -> htype, packet -> hlen,
                                              packet -> chaddr),
index 3bbb88ab9d10e778fcb2c3df1f1c9436fb332ca8..e712fd2792d9ec4fa19d1596a2a0240a790396e3 100644 (file)
@@ -3,7 +3,7 @@
    BOOTP Protocol support. */
 
 /*
- * Copyright (c) 1995, 1996 The Internet Software Consortium.
+ * Copyright (c) 1995, 1996, 1998, 1999 The Internet Software Consortium.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -42,7 +42,7 @@
 
 #ifndef lint
 static char copyright[] =
-"$Id: bootp.c,v 1.28.2.2 1998/12/21 04:21:30 mellon Exp $ Copyright (c) 1995, 1996 The Internet Software Consortium.  All rights reserved.\n";
+"$Id: bootp.c,v 1.28.2.3 1999/02/23 17:43:38 mellon Exp $ Copyright (c) 1995, 1996, 1998, 1999 The Internet Software Consortium.  All rights reserved.\n";
 #endif /* not lint */
 
 #include "dhcpd.h"
@@ -328,8 +328,6 @@ void bootp (packet)
                                              (struct packet *)0,
                                              &raw, outgoing.packet_length,
                                              from, &to, &hto);
-                       if (result < 0)
-                               warn ("send_packet: %m");
                        return;
                }
        /* Otherwise, broadcast it on the local network. */
@@ -342,6 +340,4 @@ void bootp (packet)
        result = send_packet (packet -> interface,
                              packet, &raw, outgoing.packet_length,
                              from, &to, &hto);
-       if (result < 0)
-               warn ("send_packet: %m");
 }