Loading...
Searching...
No Matches
sockaddr.c File Reference

mptcpd `struct` `sockaddr` related utility functions. More...

`#include <string.h>`
`#include <sys/socket.h>`
`#include <netinet/in.h>`
`#include <ell/ell.h>`
`#include <mptcpd/private/sockaddr.h>`
Include dependency graph for sockaddr.c:

## Functions

bool | mptcpd_sockaddr_storage_init (in_addr_t const *addr4, struct in6_addr const *addr6, in_port_t port, struct sockaddr_storage *addr)
| Initialize `sockaddr_storage` instance.
struct sockaddr * | mptcpd_sockaddr_copy (struct sockaddr const *sa)
| Deep copy a `sockaddr`.

## Detailed Description

mptcpd `struct` `sockaddr` related utility functions.

Copyright (c) 2019-2022, Intel Corporation

## Function Documentation

## mptcpd_sockaddr_copy()

struct sockaddr * mptcpd_sockaddr_copy | ( | struct sockaddr const * | sa | ) |

Deep copy a `sockaddr`.

Copy the address family-specific contents of a `sockaddr`. For an `AF_INET` address family, a `struct` `sockaddr_in` will be dynamically allocated and copied from sa. Similarly, `struct` `sockaddr_in6` will be allocated and copied from sa for the `AF_INET6` address family case.

Returns
  Dynamically allocated copy of sa if the `sa_family` member is `AF_INET` or `AF_INET6`, and `NULL` otherwise. Deallocate with `l_free()`.

## mptcpd_sockaddr_storage_init()

bool mptcpd_sockaddr_storage_init | ( | in_addr_t const * | addr4,
|  | struct in6_addr const * | addr6,
|  | in_port_t | port,
|  | struct sockaddr_storage * | addr
| ) |  |

Initialize `sockaddr_storage` instance.

Initialize a `sockaddr_storage` instance with the provided IPv4 or IPv6 address. Only one is required and used. The port may be zero in cases where it is optional.

Parameters

  [in] | addr4 | IPv4 internet address (network byte order).
  [in] | addr6 | IPv6 internet address.
  [in] | port | TCP port (network byte order).
  [in,out] | addr | mptcpd network address information.

Returns
  `true` on success. `false` otherwise.