Remove dhcpd.h.

This commit is contained in:
Nicholas J. Kain 2011-03-30 05:55:12 -04:00
parent ef9d9d26df
commit 13d9119f3a
10 changed files with 50 additions and 82 deletions

View File

@ -20,7 +20,6 @@
#include "socket.h"
#include "sys.h"
#include "ifchange.h"
#include "dhcpd.h"
#include "log.h"
#include "strl.h"
#include "io.h"

View File

@ -1,58 +0,0 @@
/* dhcpd.h */
#ifndef DHCPD_H_
#define DHCPD_H_
#include <netinet/ip.h>
#include <netinet/udp.h>
/*****************************************************************/
/* Do not modify below here unless you know what you are doing!! */
/*****************************************************************/
/* DHCP protocol -- see RFC 2131 */
#define SERVER_PORT 67
#define CLIENT_PORT 68
#define DHCP_OPTIONS_BUFSIZE 308
enum {
BOOTREQUEST = 1,
BOOTREPLY = 2
};
#define ETH_10MB 1
#define ETH_10MB_LEN 6
enum {
DHCPDISCOVER = 1,
DHCPOFFER = 2,
DHCPREQUEST = 3,
DHCPDECLINE = 4,
DHCPACK = 5,
DHCPNAK = 6,
DHCPRELEASE = 7,
DHCPINFORM = 8
};
#define BROADCAST_FLAG 0x8000
enum {
OPTION_FIELD = 0,
FILE_FIELD = 1,
SNAME_FIELD = 2
};
#define MAC_BCAST_ADDR (unsigned char *) "\xff\xff\xff\xff\xff\xff"
enum {
OPT_CODE = 0,
OPT_LEN = 1,
OPT_DATA = 2
};
struct option_set {
unsigned char *data;
struct option_set *next;
};
#endif

View File

@ -37,7 +37,7 @@
#include <sys/stat.h>
#include <fcntl.h>
#include "dhcpd.h"
#include "dhcpmsg.h"
#include "packet.h"
#include "options.h"
#include "config.h"
@ -74,9 +74,9 @@ uint32_t random_xid(void)
static void init_header(struct dhcpMessage *packet, char type)
{
memset(packet, 0, DHCP_SIZE);
packet->op = BOOTREQUEST; /* client */
packet->htype = ETH_10MB;
packet->hlen = ETH_10MB_LEN;
packet->op = 1; // BOOTREQUEST (client)
packet->htype = 1; // ETH_10MB
packet->hlen = 6; // ETH_10MB_LEN
packet->cookie = htonl(DHCP_MAGIC);
packet->options[0] = DHCP_END;
add_simple_option(packet->options, DHCP_MESSAGE_TYPE, type);
@ -115,12 +115,14 @@ static void add_requests(struct dhcpMessage *packet)
packet->options[end + OPT_DATA + len] = DHCP_END;
}
#define MAC_BCAST_ADDR (unsigned char *) "\xff\xff\xff\xff\xff\xff"
/* Wrapper that broadcasts a raw dhcp packet on the bound interface. */
static int bcast_raw_packet(struct dhcpMessage *packet)
{
return raw_packet(packet, INADDR_ANY, CLIENT_PORT, INADDR_BROADCAST,
SERVER_PORT, MAC_BCAST_ADDR, client_config.ifindex);
return raw_packet(packet, INADDR_ANY, DHCP_CLIENT_PORT, INADDR_BROADCAST,
DHCP_SERVER_PORT, MAC_BCAST_ADDR, client_config.ifindex);
}
#undef MAC_BCAST_ADDR
/* Broadcast a DHCP discover packet to the network, with an optionally
* requested IP */
@ -170,8 +172,8 @@ int send_renew(uint32_t xid, uint32_t server, uint32_t ciaddr)
add_requests(&packet);
log_line("Sending renew...");
if (server)
return kernel_packet(&packet, ciaddr, CLIENT_PORT,
server, SERVER_PORT);
return kernel_packet(&packet, ciaddr, DHCP_CLIENT_PORT, server,
DHCP_SERVER_PORT);
else
return bcast_raw_packet(&packet);
}
@ -213,7 +215,8 @@ int send_release(uint32_t server, uint32_t ciaddr)
add_simple_option(packet.options, DHCP_SERVER_ID, server);
log_line("Sending release...");
return kernel_packet(&packet, ciaddr, CLIENT_PORT, server, SERVER_PORT);
return kernel_packet(&packet, ciaddr, DHCP_CLIENT_PORT, server,
DHCP_SERVER_PORT);
}
/* return -1 on errors that are fatal for the socket,
@ -252,7 +255,7 @@ int get_raw_packet(struct dhcpMessage *payload, int fd)
sleep(1);
return -2;
}
if (packet.udp.dest != htons(CLIENT_PORT)) {
if (packet.udp.dest != htons(DHCP_CLIENT_PORT)) {
log_line("UDP destination port incorrect: %d", ntohs(packet.udp.dest));
sleep(1);
return -2;

View File

@ -2,9 +2,23 @@
#define CLIENTPACKET_H_
#include <stdint.h>
#include "packet.h" // for struct dhcpMessage
#define DHCP_SERVER_PORT 67
#define DHCP_CLIENT_PORT 68
#define DHCP_MAGIC 0x63825363
enum {
DHCPDISCOVER = 1,
DHCPOFFER = 2,
DHCPREQUEST = 3,
DHCPDECLINE = 4,
DHCPACK = 5,
DHCPNAK = 6,
DHCPRELEASE = 7,
DHCPINFORM = 8
};
uint32_t random_xid(void);
int send_discover(uint32_t xid, uint32_t requested);
int send_selecting(uint32_t xid, uint32_t server, uint32_t requested);

View File

@ -33,7 +33,6 @@
#include <errno.h>
#include "options.h"
#include "dhcpd.h"
#include "config.h"
#include "packet.h"
#include "options.h"

View File

@ -41,7 +41,6 @@
#include <grp.h>
#include "ndhc-defines.h"
#include "dhcpd.h"
#include "config.h"
#include "options.h"
#include "dhcpmsg.h"

View File

@ -9,7 +9,6 @@
#include <string.h>
#include "log.h"
#include "dhcpd.h"
#include "options.h"
/* supported options are easily added here */
@ -63,6 +62,11 @@ uint8_t* get_option(struct dhcpMessage *packet, int code)
{
uint8_t *optionptr;
int len, rem, overload = 0;
enum {
OPTION_FIELD = 0,
FILE_FIELD = 1,
SNAME_FIELD = 2
};
enum {
FILE_FIELD101 = FILE_FIELD * 0x101,
SNAME_FIELD101 = SNAME_FIELD * 0x101,

View File

@ -6,6 +6,8 @@
#define TYPE_MASK 0x0F
#define DHCP_OPTIONS_BUFSIZE 308
/* DHCP option codes (partial list) */
#define DHCP_PADDING 0x00
#define DHCP_SUBNET 0x01
@ -66,12 +68,23 @@ enum {
#define OPTION_REQ 0x10 /* have the client request this option */
#define OPTION_LIST 0x20 /* There can be a list of 1 or more of these */
enum {
OPT_CODE = 0,
OPT_LEN = 1,
OPT_DATA = 2
};
struct dhcp_option {
char name[10];
char flags;
unsigned char code;
};
struct option_set {
unsigned char *data;
struct option_set *next;
};
extern struct dhcp_option options[];
extern int option_lengths[];

View File

@ -17,7 +17,6 @@
#include "sys.h"
#include "log.h"
#include "io.h"
#include "dhcpd.h"
#include "options.h"
/* Read a packet from socket fd, return -1 on read error, -2 on packet error */
@ -187,7 +186,7 @@ void change_listen_mode(struct client_state_t *cs, int new_mode)
cs->listenFd = -1;
}
if (new_mode == LM_KERNEL) {
cs->listenFd = listen_socket(INADDR_ANY, CLIENT_PORT,
cs->listenFd = listen_socket(INADDR_ANY, DHCP_CLIENT_PORT,
client_config.interface);
epoll_add(cs, cs->listenFd);
}

View File

@ -36,7 +36,6 @@
#include <linux/filter.h>
#include "log.h"
#include "strl.h"
#include "dhcpd.h" /* For SERVER_PORT and CLIENT_PORT */
int set_sock_nonblock(int fd)
{
@ -142,13 +141,10 @@ int raw_socket(int ifindex)
return -1;
}
if (SERVER_PORT == 67 && CLIENT_PORT == 68) {
/* Use only if standard ports are in use */
/* Ignoring error (kernel may lack support for this) */
if (setsockopt(fd, SOL_SOCKET, SO_ATTACH_FILTER, &filter_prog,
sizeof filter_prog) >= 0)
log_line("Attached filter to raw socket fd %d", fd);
}
set_sock_nonblock(fd);