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 288

#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  
   {  
      uint8_t bp_op;  
      uint8_t bp_htype;  
      uint8_t bp_hlen;  
      uint8_t bp_hops;  
      uint32_t bp_xid;  
      uint16_t bp_secs;  
      uint16_t bp_flags;  
      uint32_t bp_ciaddr;  
      uint32_t bp_yiaddr;  
      uint32_t bp_siaddr;  
      uint32_t bp_giaddr;  
      uint8_t bp_chaddr[16];  
      char bp_sname[64];  
      char bp_file[128];  
      uint8_t 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  
   {  
      uint8_t dyn_msgtyp;  
      uint32_t dyn_yiaddr;  
      uint32_t dyn_netmask;  
      uint32_t dyn_broadcast;  
      uint32_t dyn_gateway;  
      uint32_t dyn_pdns;  
      uint32_t dyn_sdns;  
      uint32_t dyn_sid;  
      uint32_t dyn_renewalTime;  
      uint32_t dyn_rebindTime;  
      uint32_t dyn_leaseTime;  
      uint8_t* dyn_hostname;  
      uint8_t* dyn_domain;  
   }  

Local Variables

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

dhcpThread
static HANDLE dhcpThread

Used in: DhcpKick()  

dhcpState
static uint8_t 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 uint32_t dhcpApiTimeout

Used in: DhcpKick()  
  NutDhcpClient()  

dhcpApiStart
static uint32_t 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, uint8_t* mac, uint32_t timeout )
Prototyped in: nut/include/pro/dhcp.h
Calls: DhcpKick() nut/pro/dhcpc.c
  NutDeviceLookup() nut/os/devreg.c
  NutDhcpRelease() nut/pro/dhcpc.c
  NutDnsConfig2() nut/pro/confdns.c
  NutNetIfConfig2() nut/net/ifconfig.c
  NutNetIfSetup() nut/net/ifconfig.c
  NutNetLoadConfig() nut/net/confnet.c
  NutSleep() nut/os/timer.c
  memcpy() nut/c/string/memcpy.c
Called by: InitEthernetDevice() nut/app/ftpd/ftpserv.c
  NutAppMain() nut/hwtest/audio/nutpiper/nutpiper.c
  ProtocolPortConfigure() nut/app/pppc/pppc.c
  WebDemo() nut/hwtest/avr/basemon/webdemo.c
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, uint32_t 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, uint32_t timeout )
Prototyped in: nut/include/pro/dhcp.h
Calls: DhcpKick() nut/pro/dhcpc.c
Called by: NutDhcpIfConfig() 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 ( uint8_t* op, uint8_t ot, uint8_t ov )
Called by: DhcpPrepHeader() nut/pro/dhcpc.c

Local Function DhcpAddOption()

static size_t DhcpAddOption ( uint8_t* op, uint8_t ot, void* ov, uint8_t len )
Calls: memcpy() nut/c/string/memcpy.c
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 ( uint8_t* 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 ( uint8_t* op, uint8_t ot, uint16_t ov )
Calls: __byte_swap2() nut/boot/appload/utils.c
  memcpy() nut/c/string/memcpy.c
Called by: DhcpBroadcastDiscover() nut/pro/dhcpc.c
  DhcpSendInform() nut/pro/dhcpc.c

Local Function DhcpBroadcastDiscover()

static int DhcpBroadcastDiscover ( UDPSOCKET* sock, BOOTP* bp, uint32_t xid, uint32_t raddr, uint16_t 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() nut/c/string/strlen.c
Called by: NutDhcpClient() nut/pro/dhcpc.c

Local Function DhcpBroadcastRequest()

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

Local Function DhcpKick()

static int DhcpKick ( const char* name, uint8_t state, uint32_t timeout )
Calls: NutDeviceLookup() nut/os/devreg.c
  NutEventPostAsync() nut/os/event.c
  NutEventWait() nut/os/event.c
  NutGetMillis() nut/os/timer.c
  NutThreadCreate() nut/arch/cm3/os/context.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 unsigned int DhcpPrepHeader ( BOOTP* bp, uint8_t msgtyp, uint32_t xid, uint32_t ciaddr, uint16_t secs )
Calls: DhcpAddByteOption() nut/pro/dhcpc.c
  __byte_swap2() nut/boot/appload/utils.c
  memcpy() nut/c/string/memcpy.c
  memset() nut/c/string/memset.c
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, uint32_t xid, BOOTP* bp, uint32_t 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, uint32_t daddr, BOOTP* bp, uint32_t xid, uint32_t 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() nut/c/string/strlen.c
Called by: NutDhcpClient() nut/pro/dhcpc.c

Local Function DhcpSendMessage()

static int DhcpSendMessage ( UDPSOCKET* sock, uint32_t 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, uint32_t daddr, BOOTP* bp, uint32_t xid, uint32_t caddr, uint32_t 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, uint32_t daddr, BOOTP* bp, uint32_t xid, uint32_t caddr, uint32_t raddr, uint32_t sid, uint16_t secs )
Calls: DhcpAddOption() nut/pro/dhcpc.c
  DhcpAddParmReqOption() nut/pro/dhcpc.c
  DhcpPrepHeader() nut/pro/dhcpc.c
  DhcpSendMessage() nut/pro/dhcpc.c
  strlen() nut/c/string/strlen.c
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/boot/appload/utils.c
  copy_str() nut/pro/dhcpc.c
  malloc() nut/crt/malloc.c
  memcpy() nut/c/string/memcpy.c
  memset() nut/c/string/memset.c
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 ( uint8_t** dst, void* src, int len )
Calls: free() nut/crt/malloc.c
  malloc() nut/crt/malloc.c
  memcpy() nut/c/string/memcpy.c
Called by: ParseReply() nut/pro/dhcpc.c