Discovering Nut/Net nodes. More...
![]() |
Data Structures | |
struct | DISCOVERY_OPTIONS |
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. |
Discovering Nut/Net nodes.
#define NUT_THREAD_DISTSTACK 320 |
Definition at line 95 of file discover.c.
Referenced by NutRegisterDiscovery().
#define DISCOVERY_PORT 9806 |
Definition at line 100 of file discover.c.
Referenced by NutRegisterDiscovery().
int NutDiscoveryAnnTele | ( | DISCOVERY_TELE * | dist | ) |
Create an announcement datagram.
dist | Pointer to the datagram buffer that will be filled. |
Definition at line 122 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().
Referenced by DiscoveryResponder().
int NutDiscoveryAppConf | ( | DISCOVERY_TELE * | dist | ) |
Apply new configuration.
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 150 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 212 of file discover.c.
References _CONFNET::cdn_ip_addr, _CONFNET::cdn_ip_mask, _CONFNET::cdn_mac, confnet, DISF_INITAL_ANN, DISCOVERY_OPTIONS::disopt_flags, DISCOVERY_OPTIONS::disopt_ipmask, DISCOVERY_OPTIONS::disopt_port, 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.
func | Pointer to the callback function or NULL to disable responses. |
Definition at line 282 of file discover.c.
Register discovery telegram responder.
The first call will activate the responder thread. Any subsequent calls will return a failure.
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. |
Definition at line 308 of file discover.c.
References DISCOVERY_PORT, DiscoveryResponder(), DISCOVERY_OPTIONS::disopt_flags, DISCOVERY_OPTIONS::disopt_ipmask, DISCOVERY_OPTIONS::disopt_port, NUT_THREAD_DISTSTACK, NUT_THREAD_STACK_ADD, NUT_THREAD_STACK_MULT, and NutThreadCreate().
Referenced by main().