File nut/pro/dhcpc.c


Included Files


Preprocessor definitions

#define DHCP_SERVERPORT 67

#define DHCP_CLIENTPORT 68

#define MAX_DHCP_MSGSIZE 576

#define MIN_DHCP_MSGSIZE 300

#define MAX_DHCP_BUFSIZE 1728

#define MIN_DHCP_WAIT 4000

#define MAX_DHCP_WAIT 64000

#define MAX_DCHP_RETRIES 3

#define MAX_DCHP_RELEASE_RETRIES 0

#define DHCP_DEFAULT_LEASE 43200

#define MAX_DHCP_NAPTIME 4294967

#define NUT_THREAD_DHCPSTACK 512

#define DHCP_DISCOVER 1

#define DHCP_OFFER 2

#define DHCP_REQUEST 3

#define DHCP_DECLINE 4

#define DHCP_ACK 5

#define DHCP_NAK 6

#define DHCP_RELEASE 7

#define DHCP_INFORM 8

#define DHCPOPT_PAD 0

#define DHCPOPT_NETMASK 1

#define DHCPOPT_GATEWAY 3

#define DHCPOPT_DNS 6

#define DHCPOPT_HOSTNAME 12

#define DHCPOPT_DOMAIN 15

#define DHCPOPT_BROADCAST 28

#define DHCPOPT_REQESTIP 50

#define DHCPOPT_LEASETIME 51

#define DHCPOPT_MSGTYPE 53

#define DHCPOPT_SID 54

#define DHCPOPT_PARAMREQUEST 55

#define DHCPOPT_MAXMSGSIZE 57

#define DHCPOPT_RENEWALTIME 58

#define DHCPOPT_REBINDTIME 59

#define DHCPOPT_END 255


Typedef BOOTP

typedef struct bootp BOOTP
See: Type struct bootp

Type struct bootp

struct bootp
struct bootp  
   {  
      u_char bp_op;  
      u_char bp_htype;  
      u_char bp_hlen;  
      u_char bp_hops;  
      u_long bp_xid;  
      u_short bp_secs;  
      u_short bp_flags;  
      u_long bp_ciaddr;  
      u_long bp_yiaddr;  
      u_long bp_siaddr;  
      u_long bp_giaddr;  
      u_char bp_chaddr[16];  
      char bp_sname[64];  
      char bp_file[128];  
      u_char bp_options[312];  
   }  

Typedef DYNCFG

typedef struct dyn_cfg DYNCFG
See: Type struct dyn_cfg

Type struct dyn_cfg

struct dyn_cfg
struct dyn_cfg  
   {  
      u_char dyn_msgtyp;  
      u_long dyn_yiaddr;  
      u_long dyn_netmask;  
      u_long dyn_broadcast;  
      u_long dyn_gateway;  
      u_long dyn_pdns;  
      u_long dyn_sdns;  
      u_long dyn_sid;  
      u_long dyn_renewalTime;  
      u_long dyn_rebindTime;  
      u_long dyn_leaseTime;  
      u_char* dyn_hostname;  
      u_char* dyn_domain;  
   }  

Local Variables

dhcpConfig
static DYNCFG* dhcpConfig
Used in: NutDhcpClient()  
  NutDhcpIfConfig()  

dhcpThread
static HANDLE dhcpThread

Used in: DhcpKick()  

dhcpState
static u_char dhcpState

Used in: DhcpKick()  
  NutDhcpClient()  
  NutDhcpIfConfig()  
  NutDhcpInform()  
  NutDhcpIsConfigured()  
  NutDhcpRelease()  
  NutDhcpStatus()  

dhcpError
static int dhcpError

Used in: DhcpKick()  
  DhcpRecvMessage()  
  DhcpSendMessage()  
  NutDhcpClient()  
  NutDhcpError()  
  NutDhcpIfConfig()  
  NutDhcpInform()  
  NutDhcpRelease()  

dhcpWake
static HANDLE dhcpWake

Used in: DhcpKick()  
  NutDhcpClient()  

dhcpDone
static HANDLE dhcpDone

Used in: DhcpKick()  
  NutDhcpClient()  

dhcpApiTimeout
static u_long dhcpApiTimeout

Used in: DhcpKick()  
  NutDhcpClient()  

dhcpApiStart
static u_long dhcpApiStart

Used in: DhcpKick()  
  NutDhcpClient()  

Global Function NutDhcpClient()

void NutDhcpClient ( void* arg )
Prototyped in: nut/pro/dhcpc.c
Calls: CheckOffer() nut/pro/dhcpc.c
  DhcpBroadcastDiscover() nut/pro/dhcpc.c
  DhcpBroadcastRequest() nut/pro/dhcpc.c
  DhcpRecvMessage() nut/pro/dhcpc.c
  DhcpSendInform() nut/pro/dhcpc.c
  DhcpSendRelease() nut/pro/dhcpc.c
  DhcpSendRequest() nut/pro/dhcpc.c
  NutEventBroadcast() nut/os/event.c
  NutEventWait() nut/os/event.c
  NutGetMillis() nut/os/timer.c
  NutGetSeconds() nut/os/timer.c
  NutUdpCreateSocket() nut/net/udpsock.c
  NutUdpDestroySocket() nut/net/udpsock.c
  NutUdpSetSockOpt() nut/net/udpsock.c
  ParseReply() nut/pro/dhcpc.c
  ReleaseDynCfg() nut/pro/dhcpc.c
  free() nut/crt/malloc.c
  malloc() nut/crt/malloc.c
Used in: DhcpKick() nut/pro/dhcpc.c
References Variables: dhcpApiStart nut/pro/dhcpc.c
  dhcpApiTimeout nut/pro/dhcpc.c
  dhcpConfig nut/pro/dhcpc.c
  dhcpDone nut/pro/dhcpc.c
  dhcpError nut/pro/dhcpc.c
  dhcpState nut/pro/dhcpc.c
  dhcpWake nut/pro/dhcpc.c

Global Function NutDhcpError()

int NutDhcpError ( const char* name )
Prototyped in: nut/include/pro/dhcp.h
References Variables: dhcpError nut/pro/dhcpc.c

Global Function NutDhcpIfConfig()

int NutDhcpIfConfig ( const char* name, u_char* mac, u_long timeout )
Prototyped in: nut/include/pro/dhcp.h
Calls: DhcpKick() nut/pro/dhcpc.c
  NutDeviceLookup() nut/os/devreg.c
  NutDnsConfig2() nut/pro/resolv.c
  NutNetIfConfig2() nut/net/ifconfig.c
  NutNetIfSetup() nut/net/ifconfig.c
  NutNetLoadConfig() nut/net/confnet.c
  NutSleep() nut/os/timer.c
  memcmp(), memcpy(), memset()
References Variables: dhcpConfig nut/pro/dhcpc.c
  dhcpError nut/pro/dhcpc.c
  dhcpState nut/pro/dhcpc.c

Global Function NutDhcpInform()

int NutDhcpInform ( const char* name, u_long timeout )
Prototyped in: nut/include/pro/dhcp.h
Calls: DhcpKick() nut/pro/dhcpc.c
References Variables: dhcpError nut/pro/dhcpc.c
  dhcpState nut/pro/dhcpc.c

Global Function NutDhcpIsConfigured()

int NutDhcpIsConfigured ( void )
Prototyped in: nut/include/pro/dhcp.h
References Variables: dhcpState nut/pro/dhcpc.c

Global Function NutDhcpRelease()

int NutDhcpRelease ( const char* name, u_long timeout )
Prototyped in: nut/include/pro/dhcp.h
Calls: DhcpKick() nut/pro/dhcpc.c
References Variables: dhcpError nut/pro/dhcpc.c
  dhcpState nut/pro/dhcpc.c

Global Function NutDhcpStatus()

int NutDhcpStatus ( const char* name )
Prototyped in: nut/include/pro/dhcp.h
References Variables: dhcpState nut/pro/dhcpc.c

Local Function CheckOffer()

static DYNCFG* CheckOffer ( DYNCFG* dyncfg, BOOTP* bp, size_t len )
Calls: ParseReply() nut/pro/dhcpc.c
  ReleaseDynCfg() nut/pro/dhcpc.c
Called by: NutDhcpClient() nut/pro/dhcpc.c

Local Function DhcpAddByteOption()

static size_t DhcpAddByteOption ( u_char* op, u_char ot, u_char ov )
Called by: DhcpPrepHeader() nut/pro/dhcpc.c

Local Function DhcpAddOption()

static size_t DhcpAddOption ( u_char* op, u_char ot, void* ov, u_char len )
Calls: memcpy()
Called by: DhcpBroadcastDiscover() nut/pro/dhcpc.c
  DhcpSendInform() nut/pro/dhcpc.c
  DhcpSendRelease() nut/pro/dhcpc.c
  DhcpSendRequest() nut/pro/dhcpc.c

Local Function DhcpAddParmReqOption()

static size_t DhcpAddParmReqOption ( u_char* op )
Called by: DhcpBroadcastDiscover() nut/pro/dhcpc.c
  DhcpSendInform() nut/pro/dhcpc.c
  DhcpSendRequest() nut/pro/dhcpc.c

Local Function DhcpAddShortOption()

static size_t DhcpAddShortOption ( u_char* op, u_char ot, u_short ov )
Calls: __byte_swap2() nut/include/sys/types.h
  memcpy()
Called by: DhcpBroadcastDiscover() nut/pro/dhcpc.c
  DhcpSendInform() nut/pro/dhcpc.c

Local Function DhcpBroadcastDiscover()

static int DhcpBroadcastDiscover ( UDPSOCKET* sock, BOOTP* bp, u_long xid, u_long raddr, u_short secs )
Calls: DhcpAddOption() nut/pro/dhcpc.c
  DhcpAddParmReqOption() nut/pro/dhcpc.c
  DhcpAddShortOption() nut/pro/dhcpc.c
  DhcpPrepHeader() nut/pro/dhcpc.c
  DhcpSendMessage() nut/pro/dhcpc.c
  strlen()
Called by: NutDhcpClient() nut/pro/dhcpc.c

Local Function DhcpBroadcastRequest()

static int DhcpBroadcastRequest ( UDPSOCKET* sock, BOOTP* bp, u_long xid, u_long caddr, u_long raddr, u_long sid, u_short secs )
Calls: DhcpSendRequest() nut/pro/dhcpc.c
Called by: NutDhcpClient() nut/pro/dhcpc.c

Local Function DhcpKick()

static int DhcpKick ( const char* name, u_char state, u_long timeout )
Calls: NutDeviceLookup() nut/os/devreg.c
  NutEventPost() nut/os/event.c
  NutEventWait() nut/os/event.c
  NutGetMillis() nut/os/timer.c
  NutThreadCreate() nut/arch/avr/os/context_gcc.c
Called by: NutDhcpIfConfig() nut/pro/dhcpc.c
  NutDhcpInform() nut/pro/dhcpc.c
  NutDhcpRelease() nut/pro/dhcpc.c
References Functions: NutDhcpClient() nut/pro/dhcpc.c
References Variables: dhcpApiStart nut/pro/dhcpc.c
  dhcpApiTimeout nut/pro/dhcpc.c
  dhcpDone nut/pro/dhcpc.c
  dhcpError nut/pro/dhcpc.c
  dhcpState nut/pro/dhcpc.c
  dhcpThread nut/pro/dhcpc.c
  dhcpWake nut/pro/dhcpc.c

Local Function DhcpPrepHeader()

static u_int DhcpPrepHeader ( BOOTP* bp, u_char msgtyp, u_long xid, u_long ciaddr, u_short secs )
Calls: DhcpAddByteOption() nut/pro/dhcpc.c
  __byte_swap2() nut/include/sys/types.h
  memcpy(), memset()
Called by: DhcpBroadcastDiscover() nut/pro/dhcpc.c
  DhcpSendInform() nut/pro/dhcpc.c
  DhcpSendRelease() nut/pro/dhcpc.c
  DhcpSendRequest() nut/pro/dhcpc.c

Local Function DhcpRecvMessage()

static int DhcpRecvMessage ( UDPSOCKET* sock, u_long xid, BOOTP* bp, u_long tmo )
Calls: NutGetMillis() nut/os/timer.c
  NutUdpReceiveFrom() nut/net/udpsock.c
Called by: NutDhcpClient() nut/pro/dhcpc.c
References Variables: dhcpError nut/pro/dhcpc.c

Local Function DhcpSendInform()

static int DhcpSendInform ( UDPSOCKET* sock, u_long daddr, BOOTP* bp, u_long xid, u_long caddr )
Calls: DhcpAddOption() nut/pro/dhcpc.c
  DhcpAddParmReqOption() nut/pro/dhcpc.c
  DhcpAddShortOption() nut/pro/dhcpc.c
  DhcpPrepHeader() nut/pro/dhcpc.c
  DhcpSendMessage() nut/pro/dhcpc.c
  strlen()
Called by: NutDhcpClient() nut/pro/dhcpc.c

Local Function DhcpSendMessage()

static int DhcpSendMessage ( UDPSOCKET* sock, u_long addr, BOOTP* bp, size_t len )
Calls: NutUdpSendTo() nut/net/udpsock.c
Called by: DhcpBroadcastDiscover() nut/pro/dhcpc.c
  DhcpSendInform() nut/pro/dhcpc.c
  DhcpSendRelease() nut/pro/dhcpc.c
  DhcpSendRequest() nut/pro/dhcpc.c
References Variables: dhcpError nut/pro/dhcpc.c

Local Function DhcpSendRelease()

static int DhcpSendRelease ( UDPSOCKET* sock, u_long daddr, BOOTP* bp, u_long xid, u_long caddr, u_long sid )
Calls: DhcpAddOption() nut/pro/dhcpc.c
  DhcpPrepHeader() nut/pro/dhcpc.c
  DhcpSendMessage() nut/pro/dhcpc.c
Called by: NutDhcpClient() nut/pro/dhcpc.c

Local Function DhcpSendRequest()

static int DhcpSendRequest ( UDPSOCKET* sock, u_long daddr, BOOTP* bp, u_long xid, u_long caddr, u_long raddr, u_long sid, u_short secs )
Calls: DhcpAddOption() nut/pro/dhcpc.c
  DhcpAddParmReqOption() nut/pro/dhcpc.c
  DhcpPrepHeader() nut/pro/dhcpc.c
  DhcpSendMessage() nut/pro/dhcpc.c
  strlen()
Called by: DhcpBroadcastRequest() nut/pro/dhcpc.c
  NutDhcpClient() nut/pro/dhcpc.c

Local Function ParseReply()

static DYNCFG* ParseReply ( BOOTP* bp, int len )
Calls: ReleaseDynCfg() nut/pro/dhcpc.c
  __byte_swap4() nut/include/sys/types.h
  copy_str() nut/pro/dhcpc.c
  malloc() nut/crt/malloc.c
  memcpy(), memset()
Called by: CheckOffer() nut/pro/dhcpc.c
  NutDhcpClient() nut/pro/dhcpc.c

Local Function ReleaseDynCfg()

static void ReleaseDynCfg ( DYNCFG* dyncfg )
Calls: free() nut/crt/malloc.c
Called by: CheckOffer() nut/pro/dhcpc.c
  NutDhcpClient() nut/pro/dhcpc.c
  ParseReply() nut/pro/dhcpc.c

Local Function copy_str()

static void copy_str ( u_char** dst, void* src, int len )
Calls: free() nut/crt/malloc.c
  malloc() nut/crt/malloc.c
  memcpy()
Called by: ParseReply() nut/pro/dhcpc.c