mesh Callbacks
[Callbacks]

mesh Callbacks More...

Collaboration diagram for mesh Callbacks:

Functions

int dessert_mesh_ping (dessert_msg_t *msg, size_t len, dessert_msg_proc_t *proc, const dessert_meshif_t *iface, dessert_frameid_t id)
 Handle ping packets.
int dessert_mesh_pong (dessert_msg_t *msg, size_t len, dessert_msg_proc_t *proc, const dessert_meshif_t *iface, dessert_frameid_t id)
 Handle pong packets.
int dessert_mesh_trace (dessert_msg_t *msg, size_t len, dessert_msg_proc_t *proc, const dessert_meshif_t *iface, dessert_frameid_t id)
 Handle trace packets.
int dessert_mesh_ipttl (dessert_msg_t *msg, size_t len, dessert_msg_proc_t *proc, const dessert_meshif_t *iface, dessert_frameid_t id)
 Enable IP-based tracing.
int dessert_mesh_drop_ethernet (dessert_msg_t *msg, size_t len, dessert_msg_proc_t *proc, const dessert_meshif_t *iface, dessert_frameid_t id)
 Drop messages with Ethernet extension.
int dessert_mesh_drop_ip (dessert_msg_t *msg, size_t len, dessert_msg_proc_t *proc, const dessert_meshif_t *iface, dessert_frameid_t id)
 Drop messages without Ethernet extension.

Detailed Description

mesh Callbacks


Function Documentation

int dessert_mesh_drop_ethernet ( dessert_msg_t *  msg,
size_t  len,
dessert_msg_proc_t *  proc,
const dessert_meshif_t *  meshif,
dessert_frameid_t  id 
)

Drop messages with Ethernet extension.

Drop all DES-SERT messages with an Ethernet extension.

Parameters:
*msg dessert_msg_t frame received
len length of the buffer pointed to from dessert_msg_t
*proc local processing buffer passed along the callback pipeline - may be NULL
*meshif interface received packet on - may be NULL
id unique internal frame id of the packet
Return values:
DESSERT_MSG_DROP if Ethernet extension is available
DESSERT_MSG_KEEP if Ethernet extension is missing
int dessert_mesh_drop_ip ( dessert_msg_t *  msg,
size_t  len,
dessert_msg_proc_t *  proc,
const dessert_meshif_t *  meshif,
dessert_frameid_t  id 
)

Drop messages without Ethernet extension.

Drop all DES-SERT messages with an Ethernet extension.

Parameters:
*msg dessert_msg_t frame received
len length of the buffer pointed to from dessert_msg_t
*proc local processing buffer passed along the callback pipeline - may be NULL
*meshif interface received packet on - may be NULL
id unique internal frame id of the packet
Return values:
DESSERT_MSG_KEEP if Ethernet extension is available
DESSERT_MSG_DROP if Ethernet extension is missing
int dessert_mesh_ipttl ( dessert_msg_t *  msg,
size_t  len,
dessert_msg_proc_t *  proc,
const dessert_meshif_t *  meshif,
dessert_frameid_t  id 
)

Enable IP-based tracing.

This extension decrements the TTL in IPv4 or the Hop-Limit field in IPv6 datagrams. If the value drops to 1, the datagram in the DES-SERT message is decapsulated and handed to the IP implementation of the operating system. Depending on the configuration, the IP implementation will send an ICMP time-exceeded message. This enables tracing despite the transparent underlay routing applied in DES-SERT.

Parameters:
*msg dessert_msg_t frame received
len length of the buffer pointed to from dessert_msg_t
*proc local processing buffer passed along the callback pipeline - may be NULL
*meshif interface received packet on - may be NULL
id unique internal frame id of the packet
Return values:
DESSERT_MSG_KEEP if TTL or Hop Limit > 1
DESSERT_MSG_DROP if TTL or Hop Limit <= 1
int dessert_mesh_ping ( dessert_msg_t *  msg,
size_t  len,
dessert_msg_proc_t *  proc,
const dessert_meshif_t *  meshif,
dessert_frameid_t  id 
)

Handle ping packets.

Parameters:
*msg dessert_msg_t frame received
len length of the buffer pointed to from dessert_msg_t
*proc local processing buffer passed along the callback pipeline - may be NULL
*meshif interface received packet on - may be NULL
id unique internal frame id of the packet
Return values:
DESSERT_MSG_DROP if the ping is destined to this host
DESSERT_MSG_KEEP if some other host is the destination
int dessert_mesh_pong ( dessert_msg_t *  msg,
size_t  len,
dessert_msg_proc_t *  proc,
const dessert_meshif_t *  meshif,
dessert_frameid_t  id 
)

Handle pong packets.

Parameters:
*msg dessert_msg_t frame received
len length of the buffer pointed to from dessert_msg_t
*proc local processing buffer passed along the callback pipeline - may be NULL
*meshif interface received packet on - may be NULL
id unique internal frame id of the packet
Return values:
DESSERT_MSG_DROP if the pong is destined to this host
DESSERT_MSG_KEEP if some other host is the destination
int dessert_mesh_trace ( dessert_msg_t *  msg,
size_t  len,
dessert_msg_proc_t *  proc,
const dessert_meshif_t *  meshif,
dessert_frameid_t  id 
)

Handle trace packets.

Prints the content of a trace request packet and sends the same packet with an appended trace reply extension back if no trace reply is yet present. If there is a trace request and a trace reply extension, both are printed but no packet is send. The whole trace mechanism is basically a ping/pong with additional tracing.

Parameters:
*msg dessert_msg_t frame received
len length of the buffer pointed to from dessert_msg_t
*proc local processing buffer passed along the callback pipeline - may be NULL
*meshif interface received packet on - may be NULL
id unique internal frame id of the packet
Return values:
DESSERT_MSG_DROP if this host is the destination of the trace request
DESSERT_MSG_KEEP if this host is not the destination of the trace request