Discover
[User Protocols]

Collaboration diagram for Discover:
Discovering Nut/Net nodes. More...

Defines

#define NUT_THREAD_DISTSTACK   320
#define DISCOVERY_PORT   9806

Functions

int NutDiscoveryAnnTele (DISCOVERY_TELE *dist)
 Create an announcement datagram.
int NutDiscoveryAppConf (DISCOVERY_TELE *dist)
 Apply new configuration.
void DiscoveryResponder (void *arg)
NutDiscoveryCallback NutRegisterDiscoveryCallback (NutDiscoveryCallback func)
 Register a custom discovery callback handler.
int NutRegisterDiscovery (uint32_t ipmask, uint16_t port, unsigned int flags)
 Register discovery telegram responder.

Detailed Description

Discovering Nut/Net nodes.


Define Documentation

#define NUT_THREAD_DISTSTACK   320

Definition at line 93 of file discover.c.

Referenced by NutRegisterDiscovery().

#define DISCOVERY_PORT   9806

Definition at line 98 of file discover.c.

Referenced by NutRegisterDiscovery().


Function Documentation

int NutDiscoveryAnnTele ( DISCOVERY_TELE dist  ) 

Create an announcement datagram.

Parameters:
dist Pointer to the datagram buffer that will be filled.
Returns:
Number of bytes filled into the datagram buffer.

Definition at line 120 of file discover.c.

References _CONFNET::cdn_cip_addr, _CONFNET::cdn_gateway, _CONFNET::cdn_ip_addr, _CONFNET::cdn_ip_mask, _CONFNET::cdn_mac, confnet, confos, DISCOVERY_VERSION, DIST_ANNOUNCE, DISCOVERY_TELE::dist_cip_addr, DISCOVERY_TELE::dist_custom, DISCOVERY_TELE::dist_gateway, DISCOVERY_TELE::dist_hostname, DISCOVERY_TELE::dist_ip_addr, DISCOVERY_TELE::dist_ip_mask, DISCOVERY_TELE::dist_mac, DISCOVERY_TELE::dist_type, DISCOVERY_TELE::dist_ver, DISCOVERY_TELE::dist_xid, _CONFOS::hostname, memcpy(), memset(), and strlen().

int NutDiscoveryAppConf ( DISCOVERY_TELE dist  ) 

Apply new configuration.

Parameters:
dist Pointer to the discovery datagram. It is assumed, that the validity of the datagram contents had been checked by the caller.

Definition at line 148 of file discover.c.

References _CONFNET::cdn_cip_addr, _CONFNET::cdn_gateway, _CONFNET::cdn_ip_addr, _CONFNET::cdn_ip_mask, _CONFNET::cdn_mac, confnet, confos, DISCOVERY_TELE::dist_cip_addr, DISCOVERY_TELE::dist_gateway, DISCOVERY_TELE::dist_hostname, DISCOVERY_TELE::dist_ip_addr, DISCOVERY_TELE::dist_ip_mask, DISCOVERY_TELE::dist_mac, _CONFOS::hostname, memcpy(), memset(), NutNetSaveConfig(), NutSaveConfig(), and strncpy().

void DiscoveryResponder ( void *  arg  ) 

Definition at line 210 of file discover.c.

References _CONFNET::cdn_ip_addr, _CONFNET::cdn_ip_mask, _CONFNET::cdn_mac, confnet, DISF_INITAL_ANN, INADDR_BROADCAST, malloc, memcpy(), NutDiscoveryAnnTele(), NutGetTickCount(), NutSleep(), NutUdpCreateSocket(), NutUdpReceiveFrom(), NutUdpSendTo(), NutUdpSetSockOpt(), and SO_RCVBUF.

Referenced by NutRegisterDiscovery().

NutDiscoveryCallback NutRegisterDiscoveryCallback ( NutDiscoveryCallback  func  ) 

Register a custom discovery callback handler.

When a callback had been registered, all datagrams matching the IP mask are passed to this function, which should inspect the datagram contents and take any required action like calling NutDiscoveryAnnTele() etc. If the callback returns a positive value, a response will be sent back, using that return value as its length.

Parameters:
func Pointer to the callback function or NULL to disable responses.
Returns:
Previously used callback function pointer.

Definition at line 280 of file discover.c.

int NutRegisterDiscovery ( uint32_t  ipmask,
uint16_t  port,
unsigned int  flags 
)

Register discovery telegram responder.

The first call will activate the responder thread. Any subsequent calls will return a failure.

Note:
Enabling a discovery responder is a potential security hole.
Parameters:
ipmask Update datagrams from remote hosts, which do not fit to this mask are ignored. Set to INADDR_BROADCAST to allow any. If zero, no updates are allowed.
port The responder will listen to this UDP port. If zero, the default port DISCOVERY_PORT is used.
flags Option value, may contain any combination of DISF_ flags.
Returns:
0 if a handler thread had been started, -1 otherwise.

Definition at line 306 of file discover.c.

References DISCOVERY_PORT, DiscoveryResponder(), NUT_THREAD_DISTSTACK, NUT_THREAD_STACK_ADD, NUT_THREAD_STACK_MULT, and NutThreadCreate().


© 2000-2007 by egnite Software GmbH - visit http://www.ethernut.de/