[openib-general] Port of ISC DHCP-3.0.2 to OpenIB IPoIB
Josh England
jjengla at sandia.gov
Wed Mar 30 17:04:39 PST 2005
Are there any plans to modify the linux DHCP client so it would be
possible to do kernel-level DHCP and NFSroot over IB?
-JE
Hal Rosenstock wrote:
> I just spent a little time porting ISC DHCP-3.0.2 to support DHCP over
> Infiniband per IETF Internet Draft
> draft-ietf-ipoib-dhcp-over-infiniband-09.txt. There are a couple of
> minor things to verify before making this available to
> dhcp-hackers at isc.org. I wanted to make this available to this community
> first. Any feedback is welcome.
>
> -- Hal
>
> diff -urN dhcp-3.0.2.orig/common/bpf.c dhcp-3.0.2/common/bpf.c
> --- dhcp-3.0.2.orig/common/bpf.c 2004-11-24 12:39:15.000000000 -0500
> +++ dhcp-3.0.2/common/bpf.c 2005-03-25 15:38:57.000000000 -0500
> @@ -194,6 +194,41 @@
> BPF_STMT(BPF_RET+BPF_K, 0),
> };
>
> +#if defined (HAVE_IPOIB_SUPPORT)
> +/* Packet filter program...
> + XXX Changes to the filter program may require changes to the constant
> + offsets used in if_register_send to patch the BPF program! XXX */
> +
> +struct bpf_insn dhcp_bpf_ipoib_filter [] = {
> + /* Make sure this is an IP packet... */
> + BPF_STMT (BPF_LD + BPF_H + BPF_ABS, 0),
> + BPF_JUMP (BPF_JMP + BPF_JEQ + BPF_K, ETHERTYPE_IP, 0, 8),
> +
> + /* Make sure it's a UDP packet... */
> + BPF_STMT (BPF_LD + BPF_B + BPF_ABS, 13),
> + BPF_JUMP (BPF_JMP + BPF_JEQ + BPF_K, IPPROTO_UDP, 0, 6),
> +
> + /* Make sure this isn't a fragment... */
> + BPF_STMT(BPF_LD + BPF_H + BPF_ABS, 10),
> + BPF_JUMP(BPF_JMP + BPF_JSET + BPF_K, 0x1fff, 4, 0),
> +
> + /* Get the IP header length... */
> + BPF_STMT (BPF_LDX + BPF_B + BPF_MSH, 4),
> +
> + /* Make sure it's to the right port... */
> + BPF_STMT (BPF_LD + BPF_H + BPF_IND, 6),
> + BPF_JUMP (BPF_JMP + BPF_JEQ + BPF_K, 67, 0, 1), /* patch */
> +
> + /* If we passed all the tests, ask for the whole packet. */
> + BPF_STMT(BPF_RET+BPF_K, (u_int)-1),
> + /* Otherwise, drop it. */
> + BPF_STMT(BPF_RET+BPF_K, 0),
> +};
> +
> +int dhcp_bpf_ipoib_filter_len = (sizeof dhcp_bpf_ipoib_filter /
> + sizeof (struct bpf_insn));
> +#endif
> +
> #if defined (DEC_FDDI)
> struct bpf_insn *bpf_fddi_filter;
> #endif
> diff -urN dhcp-3.0.2.orig/common/conflex.c dhcp-3.0.2/common/conflex.c
> --- dhcp-3.0.2.orig/common/conflex.c 2004-11-24 12:39:15.000000000 -0500
> +++ dhcp-3.0.2/common/conflex.c 2005-03-26 07:49:40.000000000 -0500
> @@ -740,6 +740,8 @@
> return IS;
> if (!strcasecmp (atom + 1, "gnore"))
> return IGNORE;
> + if (!strcasecmp (atom + 1, "poib"))
> + return IPOIB;
> break;
> case 'k':
> if (!strncasecmp (atom + 1, "nown", 4)) {
> diff -urN dhcp-3.0.2.orig/common/discover.c dhcp-3.0.2/common/discover.c
> --- dhcp-3.0.2.orig/common/discover.c 2004-06-10 13:59:16.000000000 -0400
> +++ dhcp-3.0.2/common/discover.c 2005-03-25 16:04:41.000000000 -0500
> @@ -484,6 +484,14 @@
> memcpy (&tmp -> hw_address.hbuf [1], sa.sa_data, 16);
> break;
>
> +#ifndef HAVE_ARPHRD_IPOIB
> +# define ARPHRD_IPOIB HTYPE_IPOIB
> +#endif
> + case ARPHRD_IPOIB:
> + tmp -> hw_address.hlen = 1;
> + tmp -> hw_address.hbuf [0] = HTYPE_IPOIB;
> + break;
> +
> #ifdef HAVE_ARPHRD_METRICOM
> case ARPHRD_METRICOM:
> tmp -> hw_address.hlen = 7;
> diff -urN dhcp-3.0.2.orig/common/ipoib.c dhcp-3.0.2/common/ipoib.c
> --- dhcp-3.0.2.orig/common/ipoib.c 1969-12-31 19:00:00.000000000 -0500
> +++ dhcp-3.0.2/common/ipoib.c 2005-03-29 23:45:52.000000000 -0500
> @@ -0,0 +1,110 @@
> +/* ipoib.c
> +
> + Packet assembly code, originally contributed by Archie Cobbs. */
> +
> +/*
> + * Copyright (c) 2004 by Internet Systems Consortium, Inc. ("ISC")
> + * Copyright (c) 1996-2003 by Internet Software Consortium
> + *
> + * Permission to use, copy, modify, and distribute this software for any
> + * purpose with or without fee is hereby granted, provided that the above
> + * copyright notice and this permission notice appear in all copies.
> + *
> + * THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES
> + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
> + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR
> + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
> + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
> + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
> + * OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
> + *
> + * Internet Systems Consortium, Inc.
> + * 950 Charter Street
> + * Redwood City, CA 94063
> + * <info at isc.org>
> + * http://www.isc.org/
> + *
> + * This software has been written for Internet Systems Consortium
> + * by Ted Lemon in cooperation with Vixie Enterprises and Nominum, Inc.
> + * To learn more about Internet Systems Consortium, see
> + * ``http://www.isc.org/''. To learn more about Vixie Enterprises,
> + * see ``http://www.vix.com''. To learn more about Nominum, Inc., see
> + * ``http://www.nominum.com''.
> + */
> +
> +#ifndef lint
> +static char copyright[] =
> +"$Id: ipoib.c,v 1.3.2.2 2004/06/10 17:59:18 dhankins Exp $ Copyright (c) 2004 Internet Systems Consortium. All rights reserved.\n";
> +#endif /* not lint */
> +
> +#include "dhcpd.h"
> +
> +#if defined (HAVE_IPOIB_SUPPORT)
> +
> +#define INFINIBAND_ALEN 20
> +
> +struct ipoib_header {
> + u16 proto;
> + u16 reserved;
> +};
> +
> +struct ipoib_pseudoheader {
> + u8 hwaddr[INFINIBAND_ALEN];
> +};
> +
> +static const u8 ipv4_bcast_addr[] = {
> + 0x00, 0xff, 0xff, 0xff,
> + 0xff, 0x12, 0x40, 0x1b, 0x00, 0x00, 0x00, 0x00,
> + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff
> +};
> +
> +#if defined (PACKET_ASSEMBLY) || defined (PACKET_DECODING)
> +#include "includes/netinet/if_ether.h"
> +#endif /* PACKET_ASSEMBLY || PACKET_DECODING */
> +
> +#if defined (PACKET_ASSEMBLY)
> +/* Assemble an hardware header... */
> +
> +void assemble_ipoib_header (interface, buf, bufix, to, toip)
> + struct interface_info *interface;
> + unsigned char *buf;
> + unsigned *bufix;
> + struct hardware *to;
> + u_int32_t toip;
> +{
> + struct ipoib_header hdr;
> +
> + /* Need pseudoheader if some sort of broadcast */
> + /* Only supports limited broadcast right now */
> + /* Does subnet broadcast also needed to be supported ? */
> + if (toip = 0xffffffff) {
> + /* Fill in IPoIB pseudoheader */
> + /* Currently assumes scope of 2 (link local) */
> + /* Might need to cycle through all scopes :-( */
> + memcpy (&buf [*bufix], &ipv4_bcast_addr, sizeof(ipv4_bcast_addr));
> + *bufix += sizeof(ipv4_bcast_addr);
> + }
> +
> + hdr.proto = htons (ETHERTYPE_IP);
> + hdr.reserved = 0;
> +
> + memcpy (&buf [*bufix], &hdr, sizeof(hdr));
> + *bufix += sizeof(hdr);
> +}
> +#endif /* PACKET_ASSEMBLY */
> +
> +#ifdef PACKET_DECODING
> +/* Decode a hardware header... */
> +
> +ssize_t decode_ipoib_header (interface, buf, bufix, from)
> + struct interface_info *interface;
> + unsigned char *buf;
> + unsigned bufix;
> + struct hardware *from;
> +{
> + from -> hbuf [0] = HTYPE_IPOIB;
> + memcpy (&from -> hbuf [1], &buf [bufix], sizeof(struct ipoib_header));
> + return sizeof(struct ipoib_header);
> +}
> +#endif /* PACKET_DECODING */
> +#endif /* HAVE_IPOIB_SUPPORT */
> diff -urN dhcp-3.0.2.orig/common/lpf.c dhcp-3.0.2/common/lpf.c
> --- dhcp-3.0.2.orig/common/lpf.c 2004-11-24 12:39:15.000000000 -0500
> +++ dhcp-3.0.2/common/lpf.c 2005-03-29 18:45:09.000000000 -0500
> @@ -168,6 +168,12 @@
> static void lpf_tr_filter_setup (struct interface_info *);
> #endif
>
> +#if defined (HAVE_IPOIB_SUPPORT)
> +extern struct sock_filter dhcp_bpf_ipoib_filter [];
> +extern int dhcp_bpf_ipoib_filter_len;
> +static void lpf_ipoib_filter_setup (struct interface_info *);
> +#endif
> +
> static void lpf_gen_filter_setup (struct interface_info *);
>
> void if_register_receive (info)
> @@ -181,6 +187,13 @@
> lpf_tr_filter_setup (info);
> else
> #endif
> +
> +#if defined (HAVE_IPOIB_SUPPORT)
> + if (info -> hw_address.hbuf [0] == HTYPE_IPOIB)
> + lpf_ipoib_filter_setup (info);
> + else
> +#endif
> +
> lpf_gen_filter_setup (info);
>
> if (!quiet_interface_discovery)
> @@ -222,7 +235,7 @@
> p.len = dhcp_bpf_filter_len;
> p.filter = dhcp_bpf_filter;
>
> - /* Patch the server port into the LPF program...
> + /* Patch the server port into the LPF program...
> XXX changes to filter program may require changes
> to the insn number(s) used below! XXX */
> dhcp_bpf_filter [8].k = ntohs ((short)local_port);
> @@ -254,7 +267,7 @@
> p.len = dhcp_bpf_tr_filter_len;
> p.filter = dhcp_bpf_tr_filter;
>
> - /* Patch the server port into the LPF program...
> + /* Patch the server port into the LPF program...
> XXX changes to filter program may require changes
> XXX to the insn number(s) used below!
> XXX Token ring filter is null - when/if we have a filter
> @@ -277,6 +290,38 @@
> }
> }
> #endif /* HAVE_TR_SUPPORT */
> +
> +#ifdef HAVE_IPOIB_SUPPORT
> +static void lpf_ipoib_filter_setup (info)
> + struct interface_info *info;
> +{
> + struct sock_fprog p;
> +
> + /* Set up the bpf filter program structure. This is defined in
> + bpf.c */
> + p.len = dhcp_bpf_ipoib_filter_len;
> + p.filter = dhcp_bpf_ipoib_filter;
> +
> + /* Patch the server port into the LPF program...
> + XXX changes to filter program may require changes
> + to the insn number(s) used below! XXX */
> + dhcp_bpf_ipoib_filter [8].k = ntohs ((short)local_port);
> +
> + if (setsockopt (info -> rfdesc, SOL_SOCKET, SO_ATTACH_FILTER, &p,
> + sizeof p) < 0) {
> + if (errno == ENOPROTOOPT || errno == EPROTONOSUPPORT ||
> + errno == ESOCKTNOSUPPORT || errno == EPFNOSUPPORT ||
> + errno == EAFNOSUPPORT) {
> + log_error ("socket: %m - make sure");
> + log_error ("CONFIG_PACKET (Packet socket) %s",
> + "and CONFIG_FILTER");
> + log_error ("(Socket Filtering) are enabled %s",
> + "in your kernel");
> + }
> + log_fatal ("Can't install packet filter program: %m");
> + }
> +}
> +#endif /* HAVE_IPOIB_SUPPORT */
> #endif /* USE_LPF_RECEIVE */
>
> #ifdef USE_LPF_SEND
> @@ -302,7 +347,7 @@
> len, from, to, hto);
>
> /* Assemble the headers... */
> - assemble_hw_header (interface, (unsigned char *)hh, &hbufp, hto);
> + assemble_hw_header (interface, (unsigned char *)hh, &hbufp, hto, to -> sin_addr.s_addr);
> fudge = hbufp % 4; /* IP header must be word-aligned. */
> memcpy (buf + fudge, (unsigned char *)hh, hbufp);
> ibufp = hbufp + fudge;
> @@ -312,7 +357,7 @@
> memcpy (buf + ibufp, raw, len);
>
> /* For some reason, SOCK_PACKET sockets can't be connected,
> - so we have to do a sentdo every time. */
> + so we have to do a sendto every time. */
> memset (&sa, 0, sizeof sa);
> sa.sa_family = AF_PACKET;
> strncpy (sa.sa_data,
> @@ -383,7 +428,14 @@
> int can_receive_unicast_unconfigured (ip)
> struct interface_info *ip;
> {
> +#if defined (HAVE_IPOIB_SUPPORT)
> + if (!strncmp (ip->name, "ib", 2))
> + return 0;
> + else
> + return 1;
> +#else
> return 1;
> +#endif
> }
>
> int supports_multiple_interfaces (ip)
> diff -urN dhcp-3.0.2.orig/common/Makefile.dist dhcp-3.0.2/common/Makefile.dist
> --- dhcp-3.0.2.orig/common/Makefile.dist 2004-09-21 16:33:35.000000000 -0400
> +++ dhcp-3.0.2/common/Makefile.dist 2005-03-30 08:00:08.000000000 -0500
> @@ -24,11 +24,11 @@
> SEDMANPAGES = dhcp-options.man5 dhcp-eval.man5
> SRC = raw.c parse.c nit.c icmp.c dispatch.c conflex.c upf.c bpf.c socket.c \
> lpf.c dlpi.c packet.c tr.c ethernet.c memory.c print.c options.c \
> - inet.c tree.c tables.c alloc.c fddi.c ctrace.c dns.c resolv.c \
> + inet.c tree.c tables.c alloc.c fddi.c ipoib.c ctrace.c dns.c resolv.c \
> execute.c discover.c comapi.c
> OBJ = raw.o parse.o nit.o icmp.o dispatch.o conflex.o upf.o bpf.o socket.o \
> lpf.o dlpi.o packet.o tr.o ethernet.o memory.o print.o options.o \
> - inet.o tree.o tables.o alloc.o fddi.o ctrace.o dns.o resolv.o \
> + inet.o tree.o tables.o alloc.o fddi.o ipoib.o ctrace.o dns.o resolv.o \
> execute.o discover.o comapi.o
> MAN = dhcp-options.5 dhcp-eval.5
>
> diff -urN dhcp-3.0.2.orig/common/packet.c dhcp-3.0.2/common/packet.c
> --- dhcp-3.0.2.orig/common/packet.c 2004-11-24 12:39:16.000000000 -0500
> +++ dhcp-3.0.2/common/packet.c 2005-03-25 11:01:46.000000000 -0500
> @@ -104,11 +104,12 @@
> }
>
> #ifdef PACKET_ASSEMBLY
> -void assemble_hw_header (interface, buf, bufix, to)
> +void assemble_hw_header (interface, buf, bufix, to, toip)
> struct interface_info *interface;
> unsigned char *buf;
> unsigned *bufix;
> struct hardware *to;
> + u_int32_t toip;
> {
> #if defined (HAVE_TR_SUPPORT)
> if (interface -> hw_address.hbuf [0] == HTYPE_IEEE802)
> @@ -120,6 +121,11 @@
> assemble_fddi_header (interface, buf, bufix, to);
> else
> #endif
> +#if defined (HAVE_IPOIB_SUPPORT)
> + if (interface -> hw_address.hbuf [0] == HTYPE_IPOIB)
> + assemble_ipoib_header (interface, buf, bufix, to, toip);
> + else
> +#endif
> assemble_ethernet_header (interface, buf, bufix, to);
>
> }
> @@ -205,6 +211,11 @@
> return decode_fddi_header (interface, buf, bufix, from);
> else
> #endif
> +#if defined (HAVE_IPOIB_SUPPORT)
> + if (interface -> hw_address.hbuf [0] == HTYPE_IPOIB)
> + return decode_ipoib_header (interface, buf, bufix, from);
> + else
> +#endif
> return decode_ethernet_header (interface, buf, bufix, from);
> }
>
> diff -urN dhcp-3.0.2.orig/common/parse.c dhcp-3.0.2/common/parse.c
> --- dhcp-3.0.2.orig/common/parse.c 2004-09-30 16:38:31.000000000 -0400
> +++ dhcp-3.0.2/common/parse.c 2005-03-26 07:46:36.000000000 -0500
> @@ -323,7 +323,7 @@
>
> /*
> * hardware-parameter :== HARDWARE hardware-type colon-seperated-hex-list SEMI
> - * hardware-type :== ETHERNET | TOKEN_RING | FDDI
> + * hardware-type :== ETHERNET | TOKEN_RING | FDDI | IPOIB
> */
>
> void parse_hardware_param (cfile, hardware)
> @@ -346,6 +346,9 @@
> case FDDI:
> hardware -> hbuf [0] = HTYPE_FDDI;
> break;
> + case IPOIB:
> + hardware -> hbuf [0] = HTYPE_IPOIB;
> + break;
> default:
> if (!strncmp (val, "unknown-", 8)) {
> hardware -> hbuf [0] = atoi (&val [8]);
> diff -urN dhcp-3.0.2.orig/includes/dhcpd.h dhcp-3.0.2/includes/dhcpd.h
> --- dhcp-3.0.2.orig/includes/dhcpd.h 2004-11-24 12:39:16.000000000 -0500
> +++ dhcp-3.0.2/includes/dhcpd.h 2005-03-28 08:25:47.000000000 -0500
> @@ -306,9 +306,9 @@
> # define EPHEMERAL_FLAGS (MS_NULL_TERMINATION | \
> UNICAST_BROADCAST_HACK)
>
> - binding_state_t __attribute__ ((mode (__byte__))) binding_state;
> - binding_state_t __attribute__ ((mode (__byte__))) next_binding_state;
> - binding_state_t __attribute__ ((mode (__byte__))) desired_binding_state;
> + binding_state_t binding_state;
> + binding_state_t next_binding_state;
> + binding_state_t desired_binding_state;
>
> struct lease_state *state;
>
> @@ -1922,7 +1922,7 @@
> u_int32_t checksum PROTO ((unsigned char *, unsigned, u_int32_t));
> u_int32_t wrapsum PROTO ((u_int32_t));
> void assemble_hw_header PROTO ((struct interface_info *, unsigned char *,
> - unsigned *, struct hardware *));
> + unsigned *, struct hardware *, u_int32_t));
> void assemble_udp_ip_header PROTO ((struct interface_info *, unsigned char *,
> unsigned *, u_int32_t, u_int32_t,
> u_int32_t, unsigned char *, unsigned));
> diff -urN dhcp-3.0.2.orig/includes/dhcp.h dhcp-3.0.2/includes/dhcp.h
> --- dhcp-3.0.2.orig/includes/dhcp.h 2004-06-10 13:59:29.000000000 -0400
> +++ dhcp-3.0.2/includes/dhcp.h 2005-03-24 13:50:14.000000000 -0500
> @@ -75,6 +75,7 @@
> #define HTYPE_ETHER 1 /* Ethernet 10Mbps */
> #define HTYPE_IEEE802 6 /* IEEE 802.2 Token Ring... */
> #define HTYPE_FDDI 8 /* FDDI... */
> +#define HTYPE_IPOIB 32 /* IPoIB */
>
> /* Magic cookie validating dhcp options field (and bootp vendor
> extensions field). */
> diff -urN dhcp-3.0.2.orig/includes/dhctoken.h dhcp-3.0.2/includes/dhctoken.h
> --- dhcp-3.0.2.orig/includes/dhctoken.h 2004-09-21 15:25:38.000000000 -0400
> +++ dhcp-3.0.2/includes/dhctoken.h 2005-03-26 07:51:29.000000000 -0500
> @@ -308,7 +308,8 @@
> REFRESH = 612,
> DOMAIN_NAME = 613,
> DO_FORWARD_UPDATE = 614,
> - KNOWN_CLIENTS = 615
> + KNOWN_CLIENTS = 615,
> + IPOIB = 616
> };
>
> #define is_identifier(x) ((x) >= FIRST_TOKEN && \
> diff -urN dhcp-3.0.2.orig/Makefile.conf dhcp-3.0.2/Makefile.conf
> --- dhcp-3.0.2.orig/Makefile.conf 2004-11-24 12:39:13.000000000 -0500
> +++ dhcp-3.0.2/Makefile.conf 2005-03-30 08:05:28.000000000 -0500
> @@ -312,7 +312,7 @@
> ## Linux 2.2
> ##--linux-2.2--
> #COPTS = -DLINUX_MAJOR=$(MAJORVERSION) -DLINUX_MINOR=$(MINORVERSION) \
> -# $(BINDDEF) $(CC_OPTIONS)
> +# $(BINDDEF) $(CC_OPTIONS) -DHAVE_IPOIB_SUPPORT -DUSERLAND_FILTER
> #CF = cf/linux.h
> #ADMMANDIR = /usr/man/man8
> #ADMMANEXT = .8
> diff -urN dhcp-3.0.2.orig/readme-ipoib.txt dhcp-3.0.2/readme-ipoib.txt
> --- dhcp-3.0.2.orig/readme-ipoib.txt 1969-12-31 19:00:00.000000000 -0500
> +++ dhcp-3.0.2/readme-ipoib.txt 2005-03-30 08:22:37.000000000 -0500
> @@ -0,0 +1,53 @@
> +3/30/05
> +ISC DHCP 3.0.2
> +Internet Systems Consortium DHCP Client V3.0.2
> +Internet Systems Consortium DHCP Server V3.0.2
> +
> +Makefile.conf
> + -DHAVE_IPOIB_SUPPORT -DUSERLAND_FILTER
> + To build on Opteron, also add -DPTRSIZE_64BIT
> +
> +
> +Notes about running
> +
> +Need to configure the Linux kernel to support
> +Socket Filtering and the Packet socket.
> + CONFIG_FILTER=y
> + CONFIG_PACKET=y
> +
> +
> +DHCP client
> +
> +/sbin/modprobe ib_ipoib
> +/sbin/ifconfig ib0 up
> + without IPv4 address
> +
> +dhclient ib0
> +
> +need to mkdir /var/state/dhcp so dhclient.leases can be saved
> +
> +setup /etc/dhclient.conf with client identifier (port GUID)
> +interface "ib0" {
> + send dhcp-client-identifier 00:08:f1:04:03:96:05:59;
> +}
> +
> +
> +DHCP server
> +
> +Load IPoIB and configure ib0 with IPv4 address
> +IP address configured on ib0
> +/sbin/ifconfig ib0 <IPv4 address>
> +
> +
> +dhcpd ib0
> +
> +setup /etc/dhcpd.conf
> +with at least IP address range
> +maybe also client identifier if want fixed IP address per client
> +ddns-update-style none;
> +subnet 192.168.0.0 netmask 255.255.255.0 {
> + range 192.168.0.10 192.168.0.20;
> +}
> +
> +touch /var/state/dhcp/dhcpd.leases
> +
> diff -urN dhcp-3.0.2.orig/server/dhcp.c dhcp-3.0.2/server/dhcp.c
> --- dhcp-3.0.2.orig/server/dhcp.c 2004-11-24 12:39:19.000000000 -0500
> +++ dhcp-3.0.2/server/dhcp.c 2005-03-28 08:52:46.000000000 -0500
> @@ -267,7 +267,7 @@
> /* %Audit% This is log output. %2004.06.17,Safe%
> * If we truncate we hope the user can get a hint from the log.
> */
> - snprintf (msgbuf, sizeof msgbuf, "DHCPDISCOVER from %s %s%s%svia %s",
> + snprintf (msgbuf, sizeof msgbuf, "DHCPDISCOVER from %s %s%s%s via %s",
> (packet -> raw -> htype
> ? print_hw_addr (packet -> raw -> htype,
> packet -> raw -> hlen,
> @@ -476,7 +476,7 @@
> * If we truncate we hope the user can get a hint from the log.
> */
> snprintf (msgbuf, sizeof msgbuf,
> - "DHCPREQUEST for %s%s from %s %s%s%svia %s",
> + "DHCPREQUEST for %s%s from %s %s%s%s via %s",
> piaddr (cip), smbuf,
> (packet -> raw -> htype
> ? print_hw_addr (packet -> raw -> htype,
> @@ -769,7 +769,7 @@
> * If we truncate we hope the user can get a hint from the log.
> */
> snprintf (msgbuf, sizeof msgbuf,
> - "DHCPRELEASE of %s from %s %s%s%svia %s (%sfound)",
> + "DHCPRELEASE of %s from %s %s%s%s via %s (%sfound)",
> cstr,
> (packet -> raw -> htype
> ? print_hw_addr (packet -> raw -> htype,
> @@ -859,7 +859,7 @@
> * If we truncate we hope the user can get a hint from the log.
> */
> snprintf (msgbuf, sizeof msgbuf,
> - "DHCPDECLINE of %s from %s %s%s%svia %s",
> + "DHCPDECLINE of %s from %s %s%s%s via %s",
> piaddr (cip),
> (packet -> raw -> htype
> ? print_hw_addr (packet -> raw -> htype,
> @@ -2807,7 +2807,7 @@
> s = (char *)0;
>
> /* Say what we're doing... */
> - log_info ("%s on %s to %s %s%s%svia %s",
> + log_info ("%s on %s to %s %s%s%s via %s",
> (state -> offer
> ? (state -> offer == DHCPACK ? "DHCPACK" : "DHCPOFFER")
> : "BOOTREPLY"),
>
>
>
> _______________________________________________
> openib-general mailing list
> openib-general at openib.org
> http://openib.org/mailman/listinfo/openib-general
>
> To unsubscribe, please visit http://openib.org/mailman/listinfo/openib-general
>
More information about the general
mailing list