Clean up 'unsigned long' used with the assumption that long == 32-bit.
This commit is contained in:
parent
8d9cc0bdb4
commit
a059b5bd13
@ -20,6 +20,7 @@
|
|||||||
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#include <stdint.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <sys/socket.h>
|
#include <sys/socket.h>
|
||||||
#include <features.h>
|
#include <features.h>
|
||||||
@ -42,12 +43,12 @@
|
|||||||
#include "log.h"
|
#include "log.h"
|
||||||
|
|
||||||
/* Create a random xid */
|
/* Create a random xid */
|
||||||
unsigned long random_xid(void)
|
uint32_t random_xid(void)
|
||||||
{
|
{
|
||||||
static int initialized;
|
static int initialized;
|
||||||
if (!initialized) {
|
if (!initialized) {
|
||||||
int fd;
|
int fd;
|
||||||
unsigned long seed;
|
uint32_t seed;
|
||||||
|
|
||||||
fd = open("/dev/urandom", O_RDONLY);
|
fd = open("/dev/urandom", O_RDONLY);
|
||||||
if (fd == -1 || read(fd, &seed, sizeof seed) < 0) {
|
if (fd == -1 || read(fd, &seed, sizeof seed) < 0) {
|
||||||
@ -98,7 +99,7 @@ static void add_requests(struct dhcpMessage *packet)
|
|||||||
|
|
||||||
/* Broadcast a DHCP discover packet to the network, with an optionally
|
/* Broadcast a DHCP discover packet to the network, with an optionally
|
||||||
* requested IP */
|
* requested IP */
|
||||||
int send_discover(unsigned long xid, unsigned long requested)
|
int send_discover(uint32_t xid, uint32_t requested)
|
||||||
{
|
{
|
||||||
struct dhcpMessage packet;
|
struct dhcpMessage packet;
|
||||||
|
|
||||||
@ -107,6 +108,8 @@ int send_discover(unsigned long xid, unsigned long requested)
|
|||||||
if (requested)
|
if (requested)
|
||||||
add_simple_option(packet.options, DHCP_REQUESTED_IP, requested);
|
add_simple_option(packet.options, DHCP_REQUESTED_IP, requested);
|
||||||
|
|
||||||
|
/* Request a RFC-specified max size to work around buggy servers. */
|
||||||
|
add_simple_option(packet.options, DHCP_MAX_SIZE, htons(576));
|
||||||
add_requests(&packet);
|
add_requests(&packet);
|
||||||
log_line("Sending discover...");
|
log_line("Sending discover...");
|
||||||
return raw_packet(&packet, INADDR_ANY, CLIENT_PORT, INADDR_BROADCAST,
|
return raw_packet(&packet, INADDR_ANY, CLIENT_PORT, INADDR_BROADCAST,
|
||||||
@ -114,8 +117,7 @@ int send_discover(unsigned long xid, unsigned long requested)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Broadcasts a DHCP request message */
|
/* Broadcasts a DHCP request message */
|
||||||
int send_selecting(unsigned long xid, unsigned long server,
|
int send_selecting(uint32_t xid, uint32_t server, uint32_t requested)
|
||||||
unsigned long requested)
|
|
||||||
{
|
{
|
||||||
struct dhcpMessage packet;
|
struct dhcpMessage packet;
|
||||||
struct in_addr addr;
|
struct in_addr addr;
|
||||||
@ -134,7 +136,7 @@ int send_selecting(unsigned long xid, unsigned long server,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Unicasts or broadcasts a DHCP renew message */
|
/* Unicasts or broadcasts a DHCP renew message */
|
||||||
int send_renew(unsigned long xid, unsigned long server, unsigned long ciaddr)
|
int send_renew(uint32_t xid, uint32_t server, uint32_t ciaddr)
|
||||||
{
|
{
|
||||||
struct dhcpMessage packet;
|
struct dhcpMessage packet;
|
||||||
int ret = 0;
|
int ret = 0;
|
||||||
@ -154,7 +156,7 @@ int send_renew(unsigned long xid, unsigned long server, unsigned long ciaddr)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Unicasts a DHCP release message */
|
/* Unicasts a DHCP release message */
|
||||||
int send_release(unsigned long server, unsigned long ciaddr)
|
int send_release(uint32_t server, uint32_t ciaddr)
|
||||||
{
|
{
|
||||||
struct dhcpMessage packet;
|
struct dhcpMessage packet;
|
||||||
|
|
||||||
|
@ -1,12 +1,14 @@
|
|||||||
#ifndef _CLIENTPACKET_H
|
#ifndef _CLIENTPACKET_H
|
||||||
#define _CLIENTPACKET_H
|
#define _CLIENTPACKET_H
|
||||||
|
|
||||||
unsigned long random_xid(void);
|
#include <stdint.h>
|
||||||
int send_discover(unsigned long xid, unsigned long requested);
|
|
||||||
int send_selecting(unsigned long xid, unsigned long server, unsigned long requested);
|
uint32_t random_xid(void);
|
||||||
int send_renew(unsigned long xid, unsigned long server, unsigned long ciaddr);
|
int send_discover(uint32_t xid, uint32_t requested);
|
||||||
int send_renew(unsigned long xid, unsigned long server, unsigned long ciaddr);
|
int send_selecting(uint32_t xid, uint32_t server, uint32_t requested);
|
||||||
int send_release(unsigned long server, unsigned long ciaddr);
|
int send_renew(uint32_t xid, uint32_t server, uint32_t ciaddr);
|
||||||
|
int send_renew(uint32_t xid, uint32_t server, uint32_t ciaddr);
|
||||||
|
int send_release(uint32_t server, uint32_t ciaddr);
|
||||||
int get_raw_packet(struct dhcpMessage *payload, int fd);
|
int get_raw_packet(struct dhcpMessage *payload, int fd);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
20
ndhc/dhcpd.h
20
ndhc/dhcpd.h
@ -2,6 +2,7 @@
|
|||||||
#ifndef _DHCPD_H
|
#ifndef _DHCPD_H
|
||||||
#define _DHCPD_H
|
#define _DHCPD_H
|
||||||
|
|
||||||
|
#include <stdint.h>
|
||||||
#include <netinet/ip.h>
|
#include <netinet/ip.h>
|
||||||
#include <netinet/udp.h>
|
#include <netinet/udp.h>
|
||||||
|
|
||||||
@ -101,32 +102,31 @@ struct option_set {
|
|||||||
|
|
||||||
struct server_config_t {
|
struct server_config_t {
|
||||||
uint32_t server; /* Our IP, in network order */
|
uint32_t server; /* Our IP, in network order */
|
||||||
uint32_t start; /* Start address of leases, network order */
|
uint32_t start; /* Start address of leases, network order */
|
||||||
uint32_t end; /* End of leases, network order */
|
uint32_t end; /* End of leases, network order */
|
||||||
struct option_set *options; /* List of DHCP options loaded from the config file */
|
struct option_set *options; /* List of DHCP options loaded from the config file */
|
||||||
char *interface; /* The name of the interface to use */
|
char *interface; /* The name of the interface to use */
|
||||||
int ifindex; /* Index number of the interface to use */
|
int ifindex; /* Index number of the interface to use */
|
||||||
unsigned char arp[6]; /* Our arp address */
|
unsigned char arp[6]; /* Our arp address */
|
||||||
unsigned long lease; /* lease time in seconds (host order) */
|
uint32_t lease; /* lease time in seconds (host order) */
|
||||||
unsigned long max_leases; /* maximum number of leases (including reserved address) */
|
uint32_t max_leases; /* maximum number of leases (including reserved address) */
|
||||||
char remaining; /* should the lease file be interpreted as lease time remaining, or
|
char remaining; /* should the lease file be interpreted as lease time remaining, or
|
||||||
* as the time the lease expires */
|
* as the time the lease expires */
|
||||||
unsigned long auto_time; /* how long should udhcpd wait before writing a config file.
|
uint32_t auto_time; /* how long should udhcpd wait before writing a config file.
|
||||||
* if this is zero, it will only write one on SIGUSR1 */
|
* if this is zero, it will only write one on SIGUSR1 */
|
||||||
unsigned long decline_time; /* how long an address is reserved if a client returns a
|
uint32_t decline_time; /* how long an address is reserved if a client returns a
|
||||||
* decline message */
|
* decline message */
|
||||||
unsigned long conflict_time; /* how long an arp conflict offender is leased for */
|
uint32_t conflict_time; /* how long an arp conflict offender is leased for */
|
||||||
unsigned long offer_time; /* how long an offered address is reserved */
|
uint32_t offer_time; /* how long an offered address is reserved */
|
||||||
unsigned long min_lease; /* minimum lease a client can request*/
|
uint32_t min_lease; /* minimum lease a client can request*/
|
||||||
char *lease_file;
|
char *lease_file;
|
||||||
char *notify_file; /* What to run whenever leases are written */
|
char *notify_file; /* What to run whenever leases are written */
|
||||||
uint32_t siaddr; /* next server bootp option */
|
uint32_t siaddr; /* next server bootp option */
|
||||||
char *sname; /* bootp server name */
|
char *sname; /* bootp server name */
|
||||||
char *boot_file; /* bootp boot file option */
|
char *boot_file; /* bootp boot file option */
|
||||||
};
|
};
|
||||||
|
|
||||||
extern struct server_config_t server_config;
|
extern struct server_config_t server_config;
|
||||||
extern struct dhcpOfferedAddr *leases;
|
extern struct dhcpOfferedAddr *leases;
|
||||||
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -12,7 +12,7 @@ struct dhcpOfferedAddr {
|
|||||||
extern unsigned char blank_chaddr[];
|
extern unsigned char blank_chaddr[];
|
||||||
|
|
||||||
void clear_lease(uint8_t *chaddr, uint32_t yiaddr);
|
void clear_lease(uint8_t *chaddr, uint32_t yiaddr);
|
||||||
struct dhcpOfferedAddr *add_lease(uint8_t *chaddr, uint32_t yiaddr, unsigned long lease);
|
struct dhcpOfferedAddr *add_lease(uint8_t *chaddr, uint32_t yiaddr, uint32_t lease);
|
||||||
int lease_expired(struct dhcpOfferedAddr *lease);
|
int lease_expired(struct dhcpOfferedAddr *lease);
|
||||||
struct dhcpOfferedAddr *oldest_expired_lease(void);
|
struct dhcpOfferedAddr *oldest_expired_lease(void);
|
||||||
struct dhcpOfferedAddr *find_lease_by_chaddr(uint8_t *chaddr);
|
struct dhcpOfferedAddr *find_lease_by_chaddr(uint8_t *chaddr);
|
||||||
|
@ -60,8 +60,8 @@
|
|||||||
|
|
||||||
static char pidfile[MAX_PATH_LENGTH] = PID_FILE_DEFAULT;
|
static char pidfile[MAX_PATH_LENGTH] = PID_FILE_DEFAULT;
|
||||||
|
|
||||||
static unsigned long requested_ip, server_addr, timeout;
|
static uint32_t requested_ip, server_addr, timeout;
|
||||||
static unsigned long lease, t1, t2, xid, start;
|
static uint32_t lease, t1, t2, xid, start;
|
||||||
static int state, packet_num, fd, listen_mode;
|
static int state, packet_num, fd, listen_mode;
|
||||||
static sig_atomic_t pending_exit, pending_renew, pending_release;
|
static sig_atomic_t pending_exit, pending_renew, pending_release;
|
||||||
|
|
||||||
@ -323,7 +323,7 @@ static void handle_packet(void)
|
|||||||
|
|
||||||
if (packet.xid != xid) {
|
if (packet.xid != xid) {
|
||||||
log_line("Ignoring XID %lx (our xid is %lx).",
|
log_line("Ignoring XID %lx (our xid is %lx).",
|
||||||
(unsigned long) packet.xid, xid);
|
(uint32_t) packet.xid, xid);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -109,12 +109,12 @@ static int fill_options(char *dest, unsigned char *option,
|
|||||||
case OPTION_U32:
|
case OPTION_U32:
|
||||||
memcpy(&val_u32, option, 4);
|
memcpy(&val_u32, option, 4);
|
||||||
dest += snprintf(dest, maxlen - (dest - odest),
|
dest += snprintf(dest, maxlen - (dest - odest),
|
||||||
"%lu ", (unsigned long) ntohl(val_u32));
|
"%u ", (uint32_t) ntohl(val_u32));
|
||||||
break;
|
break;
|
||||||
case OPTION_S32:
|
case OPTION_S32:
|
||||||
memcpy(&val_s32, option, 4);
|
memcpy(&val_s32, option, 4);
|
||||||
dest += snprintf(dest, maxlen - (dest - odest),
|
dest += snprintf(dest, maxlen - (dest - odest),
|
||||||
"%ld ", (long) ntohl(val_s32));
|
"%d ", (int32_t) ntohl(val_s32));
|
||||||
break;
|
break;
|
||||||
case OPTION_STRING:
|
case OPTION_STRING:
|
||||||
if ( (maxlen - (dest - odest)) < (unsigned)len)
|
if ( (maxlen - (dest - odest)) < (unsigned)len)
|
||||||
|
Loading…
Reference in New Issue
Block a user