Socket convenience functions

## Files

file | socket.h
| Osmocom socket convenience functions.
file | socket.c
| Osmocom socket convenience functions.

## Macros

#define | OSMO_SOCK_F_CONNECT (1 << 0)
#define | OSMO_SOCK_F_BIND (1 << 1)
#define | OSMO_SOCK_F_NONBLOCK (1 << 2)

## Functions

int | osmo_sock_init (uint16_t family, uint16_t type, uint8_t proto, const char *host, uint16_t port, unsigned int flags)
| Initialize a socket (including bind/connect) More...
int | osmo_sock_init_ofd (struct osmo_fd *ofd, int family, int type, int proto, const char *host, uint16_t port, unsigned int flags)
| Initialize a socket and fill osmo_fd. More...
int | osmo_sock_init_sa (struct sockaddr *ss, uint16_t type, uint8_t proto, unsigned int flags)
| Initialize a socket and fill sockaddr. More...
int | osmo_sockaddr_is_local (struct sockaddr *addr, unsigned int addrlen)
| Determine if the given address is a local address. More...
int | osmo_sock_unix_init (uint16_t type, uint8_t proto, const char *socket_path, unsigned int flags)
| Initialize a unix domain socket (including bind/connect) More...
int | osmo_sock_unix_init_ofd (struct osmo_fd *ofd, uint16_t type, uint8_t proto, const char *socket_path, unsigned int flags)
| Initialize a unix domain socket and fill osmo_fd. More...
static int | osmo_fd_init_ofd (struct osmo_fd *ofd, int sfd)
| fill osmo_fd for a give sfd More...
static int | sockaddr_equal (const struct sockaddr *a, const struct sockaddr *b, unsigned int len)

## Detailed Description

## Function Documentation

## osmo_fd_init_ofd()

static int osmo_fd_init_ofd | ( | struct osmo_fd * | ofd,
|  | int | sfd
| ) |  |

inline static

fill osmo_fd for a give sfd

Parameters

  [out] | ofd | file descriptor (will be filled in)
  [in] | sfd | socket file descriptor

This function fills the ofd structure.

References BSC_FD_READ, osmo_fd::fd, osmo_fd_register(), and osmo_fd::when.

Referenced by osmo_sock_init_ofd(), and osmo_sock_unix_init_ofd().

## osmo_sock_init()

int osmo_sock_init | ( | uint16_t | family,
|  | uint16_t | type,
|  | uint8_t | proto,
|  | const char * | host,
|  | uint16_t | port,
|  | unsigned int | flags
| ) |  |

Initialize a socket (including bind/connect)

Parameters

  [in] | family | Address Family like AF_INET, AF_INET6, AF_UNSPEC
  [in] | type | Socket type like SOCK_DGRAM, SOCK_STREAM
  [in] | proto | Protocol like IPPROTO_TCP, IPPROTO_UDP
  [in] | host | remote host name or IP address in string form
  [in] | port | remote port number in host byte order
  [in] | flags | flags like OSMO_SOCK_F_CONNECT

This function creates a new socket of the designated family, type and proto and optionally binds or connects it, depending on the value of flags parameter.

Referenced by gsmtap_source_init_fd(), osmo_sock_init_ofd(), and osmo_sock_init_sa().

## osmo_sock_init_ofd()

int osmo_sock_init_ofd | ( | struct osmo_fd * | ofd,
|  | int | family,
|  | int | type,
|  | int | proto,
|  | const char * | host,
|  | uint16_t | port,
|  | unsigned int | flags
| ) |  |

Initialize a socket and fill osmo_fd.

Parameters

  [out] | ofd | file descriptor (will be filled in)
  [in] | family | Address Family like AF_INET, AF_INET6, AF_UNSPEC
  [in] | type | Socket type like SOCK_DGRAM, SOCK_STREAM
  [in] | proto | Protocol like IPPROTO_TCP, IPPROTO_UDP
  [in] | host | remote host name or IP address in string form
  [in] | port | remote port number in host byte order
  [in] | flags | flags like OSMO_SOCK_F_CONNECT

This function creates (and optionall binds/connects) a socket using osmo_sock_init, but also fills the ofd structure.

References osmo_fd_init_ofd(), and osmo_sock_init().

## osmo_sock_init_sa()

int osmo_sock_init_sa | ( | struct sockaddr * | ss,
|  | uint16_t | type,
|  | uint8_t | proto,
|  | unsigned int | flags
| ) |  |

Initialize a socket and fill sockaddr.

Parameters

  [out] | ss | socket address (will be filled in)
  [in] | type | Socket type like SOCK_DGRAM, SOCK_STREAM
  [in] | proto | Protocol like IPPROTO_TCP, IPPROTO_UDP
  [in] | flags | flags like OSMO_SOCK_F_CONNECT

This function creates (and optionall binds/connects) a socket using osmo_sock_init, but also fills the ss structure.

References osmo_sock_init().

Referenced by gsmtap_source_add_sink_fd().

## osmo_sock_unix_init()

int osmo_sock_unix_init | ( | uint16_t | type,
|  | uint8_t | proto,
|  | const char * | socket_path,
|  | unsigned int | flags
| ) |  |

Initialize a unix domain socket (including bind/connect)

Parameters

  [in] | type | Socket type like SOCK_DGRAM, SOCK_STREAM
  [in] | proto | Protocol like IPPROTO_TCP, IPPROTO_UDP
  [in] | socket_path | path to identify the socket
  [in] | flags | flags like OSMO_SOCK_F_CONNECT

This function creates a new unix domain socket, type and proto and optionally binds or connects it, depending on the value of flags parameter.

Referenced by osmo_sock_unix_init_ofd().

## osmo_sock_unix_init_ofd()

int osmo_sock_unix_init_ofd | ( | struct osmo_fd * | ofd,
|  | uint16_t | type,
|  | uint8_t | proto,
|  | const char * | socket_path,
|  | unsigned int | flags
| ) |  |

Initialize a unix domain socket and fill osmo_fd.

Parameters

  [out] | ofd | file descriptor (will be filled in)
  [in] | type | Socket type like SOCK_DGRAM, SOCK_STREAM
  [in] | proto | Protocol like IPPROTO_TCP, IPPROTO_UDP
  [in] | socket_path | path to identify the socket
  [in] | flags | flags like OSMO_SOCK_F_CONNECT

This function creates (and optionall binds/connects) a socket using osmo_sock_unix_init, but also fills the ofd structure.

References osmo_fd_init_ofd(), and osmo_sock_unix_init().

## osmo_sockaddr_is_local()

int osmo_sockaddr_is_local | ( | struct sockaddr * | addr,
|  | unsigned int | addrlen
| ) |  |

Determine if the given address is a local address.

Parameters

  [in] | addr | Socket Address
  [in] | addrlen | Length of socket address in bytes

Returns
  1 if address is local, 0 otherwise.

Referenced by gsmtap_source_add_sink_fd().