Type Alias riot_sys::gnrc_netif_ops_t

source ·
pub type gnrc_netif_ops_t = gnrc_netif_ops;
Expand description

@see gnrc_netif_ops_t

Aliased Type§

struct gnrc_netif_ops_t {
    pub init: Option<unsafe extern "C" fn(_: *mut gnrc_netif_t) -> i32>,
    pub send: Option<unsafe extern "C" fn(_: *mut gnrc_netif_t, _: *mut gnrc_pktsnip) -> i32>,
    pub recv: Option<unsafe extern "C" fn(_: *mut gnrc_netif_t) -> *mut gnrc_pktsnip>,
    pub get: Option<unsafe extern "C" fn(_: *mut gnrc_netif_t, _: *mut gnrc_netapi_opt_t) -> i32>,
    pub set: Option<unsafe extern "C" fn(_: *mut gnrc_netif_t, _: *const gnrc_netapi_opt_t) -> i32>,
    pub msg_handler: Option<unsafe extern "C" fn(_: *mut gnrc_netif_t, _: *mut msg_t)>,
}

Fields§

§init: Option<unsafe extern "C" fn(_: *mut gnrc_netif_t) -> i32>

@brief Initializes and registers network interface.

@pre netif != NULL

@param[in] netif The network interface.

This function should init the device driver or MAC underlying MAC layer. This is called right before the interface’s thread starts receiving messages. It is not necessary to lock the interface’s mutex gnrc_netif_t::mutex, since it is already locked. Set to @ref gnrc_netif_default_init() if you do not need any special initialization. If you do need special initialization, it is recommended to call @ref gnrc_netif_default_init() at the start of the custom initialization function set here. This function MUST call @ref netif_register if the initialization is successful.

@return 0 if the initialization of the device or MAC layer was successful @return negative errno on error.

§send: Option<unsafe extern "C" fn(_: *mut gnrc_netif_t, _: *mut gnrc_pktsnip) -> i32>

@brief Send a @ref net_gnrc_pkt “packet” over the network interface

@pre netif != NULL && pkt != NULL

@note The function re-formats the content of @p pkt to a format expected by the netdev_driver_t::send() method of gnrc_netif_t::dev and releases the packet before returning (so no additional release should be required after calling this method).

@param[in] netif The network interface. @param[in] pkt A packet to send.

@return The number of bytes actually sent on success @return -EBADMSG, if the @ref net_gnrc_netif_hdr in @p pkt is missing or is in an unexpected format. @return -ENOTSUP, if sending @p pkt in the given format isn’t supported (e.g. empty payload with Ethernet). @return Any negative error code reported by gnrc_netif_t::dev.

§recv: Option<unsafe extern "C" fn(_: *mut gnrc_netif_t) -> *mut gnrc_pktsnip>

@brief Receives a @ref net_gnrc_pkt “packet” from the network interface

@pre netif != NULL

@note The function takes the bytes received via netdev_driver_t::recv() from gnrc_netif_t::dev and re-formats it to a @ref net_gnrc_pkt “packet” containing a @ref net_gnrc_netif_hdr and a payload header in receive order.

@param[in] netif The network interface.

@return The packet received. Contains the payload (with the type marked accordingly) and a @ref net_gnrc_netif_hdr in receive order. @return NULL, if @ref net_gnrc_pktbuf was full.

§get: Option<unsafe extern "C" fn(_: *mut gnrc_netif_t, _: *mut gnrc_netapi_opt_t) -> i32>

@brief Gets an option from the network interface

Use gnrc_netif_get_from_netdev() to just get options from gnrc_netif_t::dev.

@param[in] netif The network interface. @param[in] opt The option parameters.

@return Number of bytes in @p data. @return -EOVERFLOW, if @p max_len is lesser than the required space. @return -ENOTSUP, if @p opt is not supported to be set. @return Any negative error code reported by gnrc_netif_t::dev.

§set: Option<unsafe extern "C" fn(_: *mut gnrc_netif_t, _: *const gnrc_netapi_opt_t) -> i32>

@brief Sets an option from the network interface

Use gnrc_netif_set_from_netdev() to just set options from gnrc_netif_t::dev.

@param[in] netif The network interface. @param[in] opt The option parameters.

@return Number of bytes written to gnrc_netif_t::dev. @return -EOVERFLOW, if @p data_len is greater than the allotted space in gnrc_netif_t::dev or gnrc_netif_t. @return -ENOTSUP, if @p opt is not supported to be set. @return Any negative error code reported by gnrc_netif_t::dev.

§msg_handler: Option<unsafe extern "C" fn(_: *mut gnrc_netif_t, _: *mut msg_t)>

@brief Message handler for network interface

This message handler is used, when the network interface needs to handle message types beyond the ones defined in @ref net_gnrc_netapi “netapi”. Leave NULL if this is not the case.

@param[in] netif The network interface. @param[in] msg Message to be handled.