Discover
[User Protocols]

Collaboration diagram for Discover:

Detailed Description

Discovering Nut/Net nodes.


Defines

#define NUT_THREAD_DISTSTACK   512
#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 (u_long ipmask, u_short port, u_int flags)
 Register discovery telegram responder.


Define Documentation

#define NUT_THREAD_DISTSTACK   512

Definition at line 64 of file discover.c.

Referenced by NutRegisterDiscovery().

#define DISCOVERY_PORT   9806

Definition at line 69 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 91 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(), and memset().

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 114 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(), NutNetSaveConfig(), and NutSaveConfig().

void DiscoveryResponder ( void *  arg  ) 

Definition at line 156 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 226 of file discover.c.

int NutRegisterDiscovery ( u_long  ipmask,
u_short  port,
u_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 9806 will be 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 252 of file discover.c.

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


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