2
0
mirror of https://gitlab.isc.org/isc-projects/dhcp synced 2025-08-29 13:28:14 +00:00

Compute network number and (if not offered by server) broadcast address for linux client script

This commit is contained in:
Ted Lemon 1997-11-20 04:19:21 +00:00
parent 65e15addac
commit c6abd2055c

View File

@ -56,7 +56,7 @@
#ifndef lint
static char copyright[] =
"$Id: dhclient.c,v 1.42 1997/10/20 22:00:17 mellon Exp $ Copyright (c) 1995, 1996 The Internet Software Consortium. All rights reserved.\n";
"$Id: dhclient.c,v 1.43 1997/11/20 04:19:21 mellon Exp $ Copyright (c) 1995, 1996 The Internet Software Consortium. All rights reserved.\n";
#endif /* not lint */
#include "dhcpd.h"
@ -1829,6 +1829,46 @@ void script_write_params (ip, prefix, lease)
fprintf (scriptFile, "%sip_address=\"%s\"\n",
prefix, piaddr (lease -> address));
fprintf (scriptFile, "export %sip_address\n", prefix);
/* For the benefit of Linux (and operating systems which may
have similar needs), compute the network address based on
the supplied ip address and netmask, if provided. Also
compute the broadcast address (the host address all ones
broadcast address, not the host address all zeroes
broadcast address). */
if (lease -> options [DHO_SUBNET_MASK].len &&
(lease -> options [DHO_SUBNET_MASK].len <
sizeof lease -> address.iabuf)) {
struct iaddr netmask, subnet, broadcast;
memcpy (netmask.iabuf,
lease -> options [DHO_SUBNET_MASK].data,
lease -> options [DHO_SUBNET_MASK].len);
netmask.len = lease -> options [DHO_SUBNET_MASK].len;
subnet = subnet_number (lease -> address, netmask);
if (subnet.len) {
fprintf (scriptFile, "%snetwork_number=\"%s\";\n",
prefix, piaddr (subnet));
fprintf (scriptFile, "export %snetwork_number\n",
prefix);
if (!lease -> options [DHO_BROADCAST_ADDRESS].len) {
broadcast = broadcast_addr (subnet, netmask);
if (broadcast.len) {
fprintf (scriptFile,
"%s%s=\"%s\";\n", prefix,
"broadcast_address",
piaddr (broadcast));
fprintf (scriptFile,
"export %s%s\n", prefix,
"broadcast_address");
}
}
}
}
if (lease -> filename) {
fprintf (scriptFile, "%sfilename=\"%s\";\n",
prefix, lease -> filename);