EXTERNAL / PUBLIC. More...
Defines | |
#define | DESSERT_MSG_NEEDNOSPARSE 1 |
return code for dessert_meshrxcb_t - forces to copy the message and call again | |
#define | DESSERT_MSG_NEEDMSGPROC 2 |
return code for dessert_meshrxcb_t - forces to generate processing info and call again | |
#define | DESSERT_MSG_KEEP 0 |
return code for dessert_meshrxcb_t and dessert_sysrxcb_t | |
#define | DESSERT_MSG_DROP -1 |
return code for dessert_meshrxcb_t and dessert_sysrxcb_t | |
#define | DESSERT_IF_PROMISC 0x0 |
flag for dessert_meshif_add - set interface in promiscuous-mode (default) | |
#define | DESSERT_IF_NOPROMISC 0x1 |
flag for dessert_meshif_add - do not set interface in promiscuous-mode | |
#define | DESSERT_IF_FILTER 0x0 |
flag for dessert_meshif_add - filter out non-des-sert frames in libpcap (default) | |
#define | DESSERT_IF_NOFILTER 0x2 |
flag for dessert_meshif_add - do not filter out non-des-sert frames in libpcap | |
Functions | |
int | dessert_meshsend (const dessert_msg_t *msgin, const dessert_meshif_t *iface) |
Sends a dessert message via the specified interface or all interfaces. | |
int | dessert_meshsend_allbutone (const dessert_msg_t *msgin, const dessert_meshif_t *iface) |
Sends a dessert message via all interfaces, except via the specified interface. | |
int | dessert_meshsend_hwaddr (const dessert_msg_t *msgin, const uint8_t hwaddr[ETHER_ADDR_LEN]) |
Sends a dessert message via the interface which is identified by the given hardware address. | |
int | dessert_meshsend_randomized (const dessert_msg_t *msgin) |
Sends a dessert message via all interfaces in a randomized fashion. | |
int | dessert_meshsend_fast (dessert_msg_t *msg, const dessert_meshif_t *iface) |
Sends a dessert message fast via the specified interface or all interfaces. | |
int | dessert_meshsend_fast_allbutone (dessert_msg_t *msg, const dessert_meshif_t *iface) |
Sends a dessert message fast via all interfaces, except the specified interface. | |
int | dessert_meshsend_fast_hwaddr (dessert_msg_t *msg, const uint8_t hwaddr[ETHER_ADDR_LEN]) |
Sends a dessert message fast via the interface specified by the given hardware address. | |
int | dessert_meshsend_fast_randomized (dessert_msg_t *msgin) |
Sends a dessert message fast via all interfaces in a randomized fashion. | |
int | dessert_meshsend_raw (dessert_msg_t *msg, const dessert_meshif_t *iface) |
Sends a dessert message msg via the specified interface iface or all interfaces. | |
int | dessert_meshrxcb_add (dessert_meshrxcb_t *c, int prio) |
Adds a callback function to the meshrx pipeline. | |
int | dessert_meshrxcb_del (dessert_meshrxcb_t *c) |
Removes all occurrences of the given callback function c from the meshrx pipeline. | |
int | dessert_meshif_add (const char *dev, uint8_t flags) |
Initializes given mesh interface, starts up the packet processor thread. | |
int | dessert_meshif_del (const char *dev) |
Removes the corresponding dessert_meshif struct from _dessert_meshiflist and does some cleanup. | |
dessert_meshif_t * | dessert_meshif_get_name (const char *dev) |
Looks for mesh interface with name dev in the list of mesh interfaces and returns a pointer to it. | |
dessert_meshif_t * | dessert_meshif_get_hwaddr (const uint8_t hwaddr[ETHER_ADDR_LEN]) |
Looks for mesh interface with hardware address hwaddr in the list of mesh interfaces and returns a pointer to it. | |
dessert_meshif_t * | dessert_meshiflist_get (void) |
Returns the head of the list of mesh interfaces (_desert_meshiflist). |
EXTERNAL / PUBLIC.
int dessert_meshif_add | ( | const char * | dev, | |
uint8_t | flags | |||
) |
Initializes given mesh interface, starts up the packet processor thread.
[in] | *dev | interface name |
[in] | flags |
DESSERT_OK | on success | |
DESSERT_ERR | on error |
DESCRIPTION:
int dessert_meshif_del | ( | const char * | dev | ) |
Removes the corresponding dessert_meshif struct from _dessert_meshiflist and does some cleanup.
[in] | dev | interface name to remove from list |
DESSERT_OK | on success | |
-errno | on error |
DESCRIPTION:
dessert_meshif_t* dessert_meshif_get_hwaddr | ( | const uint8_t | hwaddr[ETHER_ADDR_LEN] | ) |
Looks for mesh interface with hardware address hwaddr in the list of mesh interfaces and returns a pointer to it.
[in] | *hwaddr | interface hardware address |
pointer | if the interface is found | |
NULL | otherwise |
DESCRIPTION:
dessert_meshif_t* dessert_meshif_get_name | ( | const char * | dev | ) |
Looks for mesh interface with name dev in the list of mesh interfaces and returns a pointer to it.
[in] | *dev | interface name |
pointer | if the interface is found | |
NULL | otherwise |
DESCRIPTION:
dessert_meshif_t* dessert_meshiflist_get | ( | void | ) |
Returns the head of the list of mesh interfaces (_desert_meshiflist).
pointer | if list is not empty | |
NULL | otherwise |
DESCRIPTION:
int dessert_meshrxcb_add | ( | dessert_meshrxcb_t * | c, | |
int | prio | |||
) |
Adds a callback function to the meshrx pipeline.
The callback going to get called if a packet is received via a dessert interface.
[in] | c | callback function |
[in] | prio | priority of the function - lower first! |
DESSERT_OK | on success | |
-errno | on error |
DESCRIPTION:
int dessert_meshrxcb_del | ( | dessert_meshrxcb_t * | c | ) |
Removes all occurrences of the given callback function c from the meshrx pipeline.
[in] | c | callback function pointer |
DESSERT_OK | on success | |
DESSERT_ERR | otherwise |
DESCRIPTION:
int dessert_meshsend | ( | const dessert_msg_t * | msgin, | |
const dessert_meshif_t * | iface | |||
) |
Sends a dessert message via the specified interface or all interfaces.
The original message buffer will not be altered, and the ethernet src address will be set correctly
[in] | *msgin | message to send |
[in] | *iface | interface to send from - use NULL for all interfaces |
DESSERT_OK | on success | |
EINVAL | if message is broken | |
EIO | if message was not sent successfully |
DESCRIPTION:
int dessert_meshsend_allbutone | ( | const dessert_msg_t * | msgin, | |
const dessert_meshif_t * | iface | |||
) |
Sends a dessert message via all interfaces, except via the specified interface.
The original message buffer will not be altered, and the ethernet src address will be set correctly.
[in] | *msgin | message to send |
[in] | *iface | interface NOT to send from - use NULL for all interfaces |
DESSERT_OK | on success | |
EINVAL | if message is broken | |
EIO | if message was not sent successfully |
DESCRIPTION:
int dessert_meshsend_fast | ( | dessert_msg_t * | msg, | |
const dessert_meshif_t * | iface | |||
) |
Sends a dessert message fast via the specified interface or all interfaces.
This method is faster than dessert_meshsend(), but does not check the message and may alter the message buffer.
[in] | *msg | message to send |
[in] | *iface | interface to send from |
DESSERT_OK | on success | |
EINVAL | if message is broken | |
EIO | if message was not sent successfully |
DESCRIPTION:
int dessert_meshsend_fast_allbutone | ( | dessert_msg_t * | msg, | |
const dessert_meshif_t * | iface | |||
) |
Sends a dessert message fast via all interfaces, except the specified interface.
This method is faster than dessert_meshsend_allbutone(), but does not check the message and may alter the message buffer.
[in] | *msg | message to send |
[in] | *iface | interface to NOT send from - use NULL for all interfaces |
DESSERT_OK | on success | |
EINVAL | if message is broken | |
EIO | if message was not sent successfully |
DESCRIPTION:
int dessert_meshsend_fast_hwaddr | ( | dessert_msg_t * | msg, | |
const uint8_t | hwaddr[ETHER_ADDR_LEN] | |||
) |
Sends a dessert message fast via the interface specified by the given hardware address.
This method is faster than dessert_meshsend_hwaddr(), but does not check the message and may alter the message buffer.
[in] | *msg | message to send |
[in] | *hwaddr | hardware address of the interface to send from |
DESSERT_OK | on success | |
EINVAL | if message is broken | |
EIO | if message was not sent successfully |
DESCRIPTION:
int dessert_meshsend_fast_randomized | ( | dessert_msg_t * | msgin | ) |
Sends a dessert message fast via all interfaces in a randomized fashion.
This method is faster than dessert_meshsend_randomized(), but does not check the message and may alter the message buffer.
[in] | *msgin | message to send |
DESSERT_OK | on success | |
EINVAL | if message is broken | |
EIO | if message was not sent successfully |
DESCRIPTION:
int dessert_meshsend_hwaddr | ( | const dessert_msg_t * | msgin, | |
const uint8_t | hwaddr[ETHER_ADDR_LEN] | |||
) |
Sends a dessert message via the interface which is identified by the given hardware address.
The original message buffer will not be altered, and the ethernet src address will be set correctly.
[in] | *msgin | message to send |
[in] | *hwaddr | hardware address of the interface to send from |
DESSERT_OK | on success | |
EINVAL | if message is broken | |
EIO | if message was not sent successfully |
DESCRIPTION:
int dessert_meshsend_randomized | ( | const dessert_msg_t * | msgin | ) |
Sends a dessert message via all interfaces in a randomized fashion.
The original message buffer will not be altered, and the ethernet src address will be set correctly.
[in] | *msgin | message to send |
DESSERT_OK | on success | |
EINVAL | if message is broken | |
EIO | if message was not sent successfully |
DESCRIPTION:
int dessert_meshsend_raw | ( | dessert_msg_t * | msg, | |
const dessert_meshif_t * | iface | |||
) |
Sends a dessert message msg via the specified interface iface or all interfaces.
This method is faster than dessert_meshsend(), but does not check the message and may alter the message buffer. In contrast to dessert_meshsend_fast() it does not write the ether_shost address.
[in] | *msg | message to send |
[in] | *iface | interface to send from |
DESSERT_OK | on success | |
EINVAL | if message is broken | |
EIO | if message was not sent successfully |
DESCRIPTION: