pub unsafe extern "C" fn sock_ip_create(
sock: *mut sock_ip_t,
local: *const sock_ip_ep_t,
remote: *const sock_ip_ep_t,
proto: u8,
flags: u16,
) -> c_intExpand description
@brief Creates a new raw IPv4/IPv6 sock object
@pre (sock != NULL)
@param[out] sock The resulting sock object.
@param[in] local Local end point for the sock object.
May be NULL. sock_ip_ep_t::netif must either be
@ref SOCK_ADDR_ANY_NETIF or equal to sock_ip_ep_t::netif
of @p remote if remote != NULL.
If NULL @ref sock_ip_send() may bind implicitly.
@param[in] remote Remote end point for the sock object.
May be NULL but then the remote parameter of
@ref sock_ip_send() may not be NULL or it will always
error with return value -ENOTCONN.
sock_ip_ep_t::port may not be 0 if remote != NULL.
sock_ip_ep_t::netif must either be
@ref SOCK_ADDR_ANY_NETIF or equal to sock_ip_ep_t::netif
of @p local if local != NULL.
@param[in] proto Protocol to use in the raw IPv4/IPv6 sock object
(the protocol header field in IPv4 and the next_header
field in IPv6).
@param[in] flags Flags for the sock object. See also
sock flags. May be 0.
@return 0 on success.
@return -EADDRINUSE, if local != NULL and @p local is already used
elsewhere
@return -EAFNOSUPPORT, if local != NULL or remote != NULL and
sock_ip_ep_t::family of @p local or @p remote is not supported.
@return -EINVAL, if sock_ip_ep_t::addr of @p remote is an invalid address.
@return -EINVAL, if sock_ip_ep_t::netif of @p local or @p remote are not
valid interfaces or contradict each other
(i.e. (local->netif != remote->netif) && ((local->netif != SOCK_ADDR_ANY_NETIF) || (remote->netif != SOCK_ADDR_ANY_NETIF)) if neither is NULL).
@return -ENOMEM, if not enough resources can be provided for sock to be
created.
@return -EPROTONOSUPPORT, if local != NULL or remote != NULL and
proto is not supported by sock_ip_ep_t::family of @p local or @p
remote.