ISC DHCP  4.4.2b1
A reference DHCPv4 and DHCPv6 implementation
discover.c File Reference
#include "dhcpd.h"
#include <sys/ioctl.h>
#include <errno.h>

Go to the source code of this file.

Data Structures

struct  iface_conf_list
 
struct  iface_info
 

Macros

#define IF_LINE_LENGTH   1024
 
#define BSD_COMP   /* needed on Solaris for SIOCGLIFNUM */
 
#define SIOCGLIFCONF   SIOCGIFCONF
 
#define SIOCGLIFFLAGS   SIOCGIFFLAGS
 
#define LIFREQ   ifreq
 
#define LIFCONF   ifconf
 
#define lifr_name   ifr_name
 
#define lifr_addr   ifr_addr
 
#define lifr_flags   ifr_flags
 
#define lifc_len   ifc_len
 
#define lifc_buf   ifc_buf
 
#define lifc_req   ifc_req
 

Functions

isc_result_t interface_setup ()
 
isc_result_t interface_initialize (omapi_object_t *ipo, const char *file, int line)
 
int begin_iface_scan (struct iface_conf_list *ifaces)
 
int next_iface (struct iface_info *info, int *err, struct iface_conf_list *ifaces)
 
void end_iface_scan (struct iface_conf_list *ifaces)
 
void add_ipv4_addr_to_interface (struct interface_info *iface, const struct in_addr *addr)
 
void discover_interfaces (int state)
 
int if_readsocket (omapi_object_t *h)
 
int setup_fallback (struct interface_info **fp, const char *file, int line)
 
void reinitialize_interfaces ()
 
isc_result_t got_one (omapi_object_t *h)
 
isc_result_t dhcp_interface_set_value (omapi_object_t *h, omapi_object_t *id, omapi_data_string_t *name, omapi_typed_data_t *value)
 
isc_result_t dhcp_interface_get_value (omapi_object_t *h, omapi_object_t *id, omapi_data_string_t *name, omapi_value_t **value)
 
isc_result_t dhcp_interface_destroy (omapi_object_t *h, const char *file, int line)
 
isc_result_t dhcp_interface_signal_handler (omapi_object_t *h, const char *name, va_list ap)
 
isc_result_t dhcp_interface_stuff_values (omapi_object_t *c, omapi_object_t *id, omapi_object_t *h)
 
isc_result_t dhcp_interface_lookup (omapi_object_t **ip, omapi_object_t *id, omapi_object_t *ref)
 
isc_result_t dhcp_interface_create (omapi_object_t **lp, omapi_object_t *id)
 
isc_result_t dhcp_interface_remove (omapi_object_t *lp, omapi_object_t *id)
 
void interface_stash (struct interface_info *tptr)
 
void interface_snorf (struct interface_info *tmp, int ir)
 

Variables

struct interface_infointerfaces
 
struct interface_infodummy_interfaces
 
struct interface_infofallback_interface
 
int interfaces_invalidated
 
int quiet_interface_discovery
 
u_int16_t local_port
 
u_int16_t remote_port
 
u_int16_t relay_port = 0
 
int dhcpv4_over_dhcpv6 = 0
 
int(* dhcp_interface_setup_hook )(struct interface_info *, struct iaddr *)
 
int(* dhcp_interface_discovery_hook )(struct interface_info *)
 
isc_result_t(* dhcp_interface_startup_hook )(struct interface_info *)
 
int(* dhcp_interface_shutdown_hook )(struct interface_info *)
 
struct in_addr limited_broadcast
 
int local_family = AF_INET
 
struct in_addr local_address
 
void(* bootp_packet_handler )(struct interface_info *, struct dhcp_packet *, unsigned, unsigned int, struct iaddr, struct hardware *)
 
omapi_object_type_tdhcp_type_interface
 
struct interface_info ** interface_vector
 
int interface_count
 
int interface_max
 

Macro Definition Documentation

◆ BSD_COMP

#define BSD_COMP   /* needed on Solaris for SIOCGLIFNUM */

Definition at line 34 of file discover.c.

◆ IF_LINE_LENGTH

#define IF_LINE_LENGTH   1024

Definition at line 32 of file discover.c.

◆ lifc_buf

#define lifc_buf   ifc_buf

Definition at line 205 of file discover.c.

◆ lifc_len

#define lifc_len   ifc_len

Definition at line 204 of file discover.c.

◆ lifc_req

#define lifc_req   ifc_req

Definition at line 206 of file discover.c.

◆ LIFCONF

#define LIFCONF   ifconf

Definition at line 200 of file discover.c.

◆ lifr_addr

#define lifr_addr   ifr_addr

Definition at line 202 of file discover.c.

◆ lifr_flags

#define lifr_flags   ifr_flags

Definition at line 203 of file discover.c.

◆ lifr_name

#define lifr_name   ifr_name

Definition at line 201 of file discover.c.

◆ LIFREQ

#define LIFREQ   ifreq

Definition at line 199 of file discover.c.

◆ SIOCGLIFCONF

#define SIOCGLIFCONF   SIOCGIFCONF

Definition at line 197 of file discover.c.

◆ SIOCGLIFFLAGS

#define SIOCGLIFFLAGS   SIOCGIFFLAGS

Definition at line 198 of file discover.c.

Function Documentation

◆ add_ipv4_addr_to_interface()

void add_ipv4_addr_to_interface ( struct interface_info iface,
const struct in_addr *  addr 
)

Definition at line 489 of file discover.c.

◆ begin_iface_scan()

int begin_iface_scan ( struct iface_conf_list ifaces)

Definition at line 248 of file discover.c.

◆ dhcp_interface_create()

isc_result_t dhcp_interface_create ( omapi_object_t **  lp,
omapi_object_t id 
)

Definition at line 1450 of file discover.c.

◆ dhcp_interface_destroy()

isc_result_t dhcp_interface_destroy ( omapi_object_t h,
const char *  file,
int  line 
)

Definition at line 1267 of file discover.c.

◆ dhcp_interface_get_value()

isc_result_t dhcp_interface_get_value ( omapi_object_t h,
omapi_object_t id,
omapi_data_string_t name,
omapi_value_t **  value 
)

Definition at line 1259 of file discover.c.

◆ dhcp_interface_lookup()

isc_result_t dhcp_interface_lookup ( omapi_object_t **  ip,
omapi_object_t id,
omapi_object_t ref 
)

Definition at line 1366 of file discover.c.

◆ dhcp_interface_remove()

isc_result_t dhcp_interface_remove ( omapi_object_t lp,
omapi_object_t id 
)

Definition at line 1466 of file discover.c.

◆ dhcp_interface_set_value()

isc_result_t dhcp_interface_set_value ( omapi_object_t h,
omapi_object_t id,
omapi_data_string_t name,
omapi_typed_data_t value 
)

Definition at line 1222 of file discover.c.

◆ dhcp_interface_signal_handler()

isc_result_t dhcp_interface_signal_handler ( omapi_object_t h,
const char *  name,
va_list  ap 
)

Definition at line 1296 of file discover.c.

◆ dhcp_interface_stuff_values()

isc_result_t dhcp_interface_stuff_values ( omapi_object_t c,
omapi_object_t id,
omapi_object_t h 
)

Definition at line 1332 of file discover.c.

◆ discover_interfaces()

void discover_interfaces ( int  state)

Definition at line 568 of file discover.c.

◆ end_iface_scan()

void end_iface_scan ( struct iface_conf_list ifaces)

Definition at line 379 of file discover.c.

◆ got_one()

isc_result_t got_one ( omapi_object_t h)

Definition at line 1090 of file discover.c.

◆ if_readsocket()

int if_readsocket ( omapi_object_t h)

Definition at line 1045 of file discover.c.

◆ interface_initialize()

isc_result_t interface_initialize ( omapi_object_t ipo,
const char *  file,
int  line 
)

Definition at line 130 of file discover.c.

◆ interface_setup()

isc_result_t interface_setup ( void  )

Definition at line 92 of file discover.c.

◆ interface_snorf()

void interface_snorf ( struct interface_info tmp,
int  ir 
)

Definition at line 1571 of file discover.c.

◆ interface_stash()

void interface_stash ( struct interface_info tptr)

Definition at line 1528 of file discover.c.

◆ next_iface()

int next_iface ( struct iface_info info,
int err,
struct iface_conf_list ifaces 
)

Definition at line 312 of file discover.c.

◆ reinitialize_interfaces()

void reinitialize_interfaces ( void  )

Definition at line 1075 of file discover.c.

◆ setup_fallback()

int setup_fallback ( struct interface_info **  fp,
const char *  file,
int  line 
)

Definition at line 1056 of file discover.c.

Variable Documentation

◆ bootp_packet_handler

void(* bootp_packet_handler) (struct interface_info *, struct dhcp_packet *, unsigned, unsigned int, struct iaddr, struct hardware *)

Definition at line 67 of file discover.c.

◆ dhcp_interface_discovery_hook

int(* dhcp_interface_discovery_hook) (struct interface_info *)

Definition at line 50 of file discover.c.

◆ dhcp_interface_setup_hook

int(* dhcp_interface_setup_hook) (struct interface_info *, struct iaddr *)

Definition at line 49 of file discover.c.

◆ dhcp_interface_shutdown_hook

int(* dhcp_interface_shutdown_hook) (struct interface_info *)

Definition at line 52 of file discover.c.

◆ dhcp_interface_startup_hook

isc_result_t(* dhcp_interface_startup_hook) (struct interface_info *)

Definition at line 51 of file discover.c.

◆ dhcp_type_interface

omapi_object_type_t* dhcp_type_interface

Definition at line 80 of file discover.c.

◆ dhcpv4_over_dhcpv6

int dhcpv4_over_dhcpv6 = 0

Definition at line 48 of file discover.c.

◆ dummy_interfaces

struct interface_info * dummy_interfaces

Definition at line 42 of file discover.c.

◆ fallback_interface

struct interface_info * fallback_interface

Definition at line 42 of file discover.c.

◆ interface_count

int interface_count

Definition at line 87 of file discover.c.

◆ interface_max

int interface_max

Definition at line 88 of file discover.c.

◆ interface_vector

struct interface_info** interface_vector

Definition at line 86 of file discover.c.

◆ interfaces

struct interface_info* interfaces

Definition at line 42 of file discover.c.

◆ interfaces_invalidated

int interfaces_invalidated

Definition at line 43 of file discover.c.

◆ limited_broadcast

struct in_addr limited_broadcast

Definition at line 54 of file discover.c.

◆ local_address

struct in_addr local_address

Definition at line 57 of file discover.c.

◆ local_family

int local_family = AF_INET

Definition at line 56 of file discover.c.

◆ local_port

u_int16_t local_port

Definition at line 45 of file discover.c.

◆ quiet_interface_discovery

int quiet_interface_discovery

Definition at line 44 of file discover.c.

◆ relay_port

u_int16_t relay_port = 0

Definition at line 47 of file discover.c.

◆ remote_port

u_int16_t remote_port

Definition at line 46 of file discover.c.