Enumerations

Callbacks/Customization
[Core]

Enumerations

enum  nl_cb_action {
  NL_OK,
  NL_SKIP,
  NL_STOP
}
 

Callback actions.

More...
enum  nl_cb_kind {
  NL_CB_DEFAULT,
  NL_CB_VERBOSE,
  NL_CB_DEBUG,
  NL_CB_CUSTOM,
  __NL_CB_KIND_MAX
}
 

Callback kinds.

More...
enum  nl_cb_type {
  NL_CB_VALID,
  NL_CB_FINISH,
  NL_CB_OVERRUN,
  NL_CB_SKIPPED,
  NL_CB_ACK,
  NL_CB_MSG_IN,
  NL_CB_MSG_OUT,
  NL_CB_INVALID,
  NL_CB_SEQ_CHECK,
  NL_CB_SEND_ACK,
  __NL_CB_TYPE_MAX
}
 

Callback types.

More...

Callback Typedefs



typedef int(* nl_recvmsg_msg_cb_t )(struct nl_msg *msg, void *arg)
 nl_recvmsgs() callback for message processing customization
typedef int(* nl_recvmsg_err_cb_t )(struct sockaddr_nl *nla, struct nlmsgerr *nlerr, void *arg)
 nl_recvmsgs() callback for error message processing customization

Callback Handle Management



struct nl_cb * nl_cb_alloc (enum nl_cb_kind kind)
 Allocate a new callback handle.
struct nl_cb * nl_cb_clone (struct nl_cb *orig)
 Clone an existing callback handle.
struct nl_cb * nl_cb_get (struct nl_cb *cb)
void nl_cb_put (struct nl_cb *cb)

Callback Setup



int nl_cb_set (struct nl_cb *cb, enum nl_cb_type type, enum nl_cb_kind kind, nl_recvmsg_msg_cb_t func, void *arg)
 Set up a callback.
int nl_cb_set_all (struct nl_cb *cb, enum nl_cb_kind kind, nl_recvmsg_msg_cb_t func, void *arg)
 Set up a all callbacks.
int nl_cb_err (struct nl_cb *cb, enum nl_cb_kind kind, nl_recvmsg_err_cb_t func, void *arg)
 Set up an error callback.

Overwriting



void nl_cb_overwrite_recvmsgs (struct nl_cb *cb, int(*func)(struct nl_sock *, struct nl_cb *))
 Overwrite internal calls to nl_recvmsgs().
void nl_cb_overwrite_recv (struct nl_cb *cb, int(*func)(struct nl_sock *, struct sockaddr_nl *, unsigned char **, struct ucred **))
 Overwrite internal calls to nl_recv().
void nl_cb_overwrite_send (struct nl_cb *cb, int(*func)(struct nl_sock *, struct nl_msg *))
 Overwrite internal calls to nl_send().

Detailed Description

1) Setting up a callback set
 // Allocate a callback set and initialize it to the verbose default set
 struct nl_cb *cb = nl_cb_alloc(NL_CB_VERBOSE);

 // Modify the set to call my_func() for all valid messages
 nl_cb_set(cb, NL_CB_VALID, NL_CB_CUSTOM, my_func, NULL);

 // Set the error message handler to the verbose default implementation
 // and direct it to print all errors to the given file descriptor.
 FILE *file = fopen(...);
 nl_cb_err(cb, NL_CB_VERBOSE, NULL, file);

Typedef Documentation

typedef int(* nl_recvmsg_msg_cb_t)(struct nl_msg *msg, void *arg)

nl_recvmsgs() callback for message processing customization

Parameters:
msg netlink message being processed
arg argument passwd on through caller

Definition at line 41 of file handlers.h.

typedef int(* nl_recvmsg_err_cb_t)(struct sockaddr_nl *nla, struct nlmsgerr *nlerr, void *arg)

nl_recvmsgs() callback for error message processing customization

Parameters:
nla netlink address of the peer
nlerr netlink error message being processed
arg argument passed on through caller

Definition at line 50 of file handlers.h.


Enumeration Type Documentation

Callback actions.

Enumerator:
NL_OK 

Proceed with wathever would come next.

NL_SKIP 

Skip this message.

NL_STOP 

Stop parsing altogether and discard remaining messages.

Definition at line 59 of file handlers.h.

enum nl_cb_kind

Callback kinds.

Enumerator:
NL_CB_DEFAULT 

Default handlers (quiet).

NL_CB_VERBOSE 

Verbose default handlers (error messages printed).

NL_CB_DEBUG 

Debug handlers for debugging.

NL_CB_CUSTOM 

Customized handler specified by the user.

Definition at line 72 of file handlers.h.

enum nl_cb_type

Callback types.

Enumerator:
NL_CB_VALID 

Message is valid.

NL_CB_FINISH 

Last message in a series of multi part messages received.

NL_CB_OVERRUN 

Report received that data was lost.

NL_CB_SKIPPED 

Message wants to be skipped.

NL_CB_ACK 

Message is an acknowledge.

NL_CB_MSG_IN 

Called for every message received.

NL_CB_MSG_OUT 

Called for every message sent out except for nl_sendto().

NL_CB_INVALID 

Message is malformed and invalid.

NL_CB_SEQ_CHECK 

Called instead of internal sequence number checking.

NL_CB_SEND_ACK 

Sending of an acknowledge message has been requested.

Definition at line 90 of file handlers.h.


Function Documentation

struct nl_cb* nl_cb_alloc ( enum nl_cb_kind  kind  )  [read]

Allocate a new callback handle.

Parameters:
kind callback kind to be used for initialization
Returns:
Newly allocated callback handle or NULL

Definition at line 205 of file handlers.c.

References nl_cb_err(), and nl_cb_set().

Referenced by nl_cb_clone(), and nl_socket_alloc().

Here is the call graph for this function:

Here is the caller graph for this function:

struct nl_cb* nl_cb_clone ( struct nl_cb *  orig  )  [read]

Clone an existing callback handle.

Parameters:
orig original callback handle
Returns:
Newly allocated callback handle being a duplicate of orig or NULL

Definition at line 233 of file handlers.c.

References nl_cb_alloc(), and NL_CB_DEFAULT.

Referenced by nl_wait_for_ack().

Here is the call graph for this function:

Here is the caller graph for this function:

int nl_cb_set ( struct nl_cb *  cb,
enum nl_cb_type  type,
enum nl_cb_kind  kind,
nl_recvmsg_msg_cb_t  func,
void *  arg 
)

Set up a callback.

Parameters:
cb callback set
type callback to modify
kind kind of implementation
func callback function (NL_CB_CUSTOM)
arg argument passed to callback
Returns:
0 on success or a negative error code

Definition at line 285 of file handlers.c.

References NL_CB_CUSTOM.

Referenced by nl_cb_alloc(), nl_cb_set_all(), nl_socket_disable_seq_check(), nl_socket_modify_cb(), and nl_wait_for_ack().

Here is the caller graph for this function:

int nl_cb_set_all ( struct nl_cb *  cb,
enum nl_cb_kind  kind,
nl_recvmsg_msg_cb_t  func,
void *  arg 
)

Set up a all callbacks.

Parameters:
cb callback set
kind kind of callback
func callback function
arg argument to be passwd to callback function
Returns:
0 on success or a negative error code

Definition at line 314 of file handlers.c.

References nl_cb_set().

Here is the call graph for this function:

int nl_cb_err ( struct nl_cb *  cb,
enum nl_cb_kind  kind,
nl_recvmsg_err_cb_t  func,
void *  arg 
)

Set up an error callback.

Parameters:
cb callback set
kind kind of callback
func callback function
arg argument to be passed to callback function

Definition at line 335 of file handlers.c.

References NL_CB_CUSTOM.

Referenced by nl_cb_alloc().

Here is the caller graph for this function:

void nl_cb_overwrite_recvmsgs ( struct nl_cb *  cb,
int(*)(struct nl_sock *, struct nl_cb *)  func 
)

Overwrite internal calls to nl_recvmsgs().

Parameters:
cb callback set
func replacement callback for nl_recvmsgs()

Definition at line 364 of file handlers.c.

void nl_cb_overwrite_recv ( struct nl_cb *  cb,
int(*)(struct nl_sock *, struct sockaddr_nl *, unsigned char **, struct ucred **)  func 
)

Overwrite internal calls to nl_recv().

Parameters:
cb callback set
func replacement callback for nl_recv()

Definition at line 375 of file handlers.c.

void nl_cb_overwrite_send ( struct nl_cb *  cb,
int(*)(struct nl_sock *, struct nl_msg *)  func 
)

Overwrite internal calls to nl_send().

Parameters:
cb callback set
func replacement callback for nl_send()

Definition at line 387 of file handlers.c.