libosmocore 0.9.6-23.20170220git32ee5af8.fc42
Osmocom core library
Loading...
Searching...
No Matches
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)
 
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.
 
int osmo_sock_init_sa (struct sockaddr *ss, uint16_t type, uint8_t proto, unsigned int flags)
 Initialize a socket and fill sockaddr.
 
int osmo_sockaddr_is_local (struct sockaddr *addr, unsigned int addrlen)
 Determine if the given address is a local address.
 
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)
 
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.
 
char * osmo_sock_get_name (void *ctx, int fd)
 Get address/port information on soocket in dyn-alloc string.
 
static int osmo_fd_init_ofd (struct osmo_fd *ofd, int sfd)
 fill osmo_fd for a give sfd
 
static int sockaddr_equal (const struct sockaddr *a, const struct sockaddr *b, unsigned int len)
 

Detailed Description

Macro Definition Documentation

◆ OSMO_SOCK_F_BIND

#define OSMO_SOCK_F_BIND   (1 << 1)

bind the socket to a local address/port

Referenced by gsmtap_source_add_sink_fd(), osmo_sock_init(), and osmo_sock_unix_init().

◆ OSMO_SOCK_F_CONNECT

#define OSMO_SOCK_F_CONNECT   (1 << 0)

connect the socket to a remote peer

Referenced by gsmtap_source_init_fd(), osmo_sock_init(), and osmo_sock_unix_init().

◆ OSMO_SOCK_F_NONBLOCK

#define OSMO_SOCK_F_NONBLOCK   (1 << 2)

switch socket to non-blocking mode

Referenced by osmo_sock_init(), and osmo_sock_unix_init().

Function Documentation

◆ osmo_fd_init_ofd()

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

fill osmo_fd for a give sfd

Parameters
[out]ofdfile descriptor (will be filled in)
[in]sfdsocket file descriptor
Returns
socket fd on success; negative on error

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_get_name()

char * osmo_sock_get_name ( void * ctx,
int fd )

Get address/port information on soocket in dyn-alloc string.

Parameters
[in]ctxtalloc context from which to allocate string buffer
[in]fdfile descriptor of socket
Returns
string identifying the connection of this socket

◆ 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]familyAddress Family like AF_INET, AF_INET6, AF_UNSPEC
[in]typeSocket type like SOCK_DGRAM, SOCK_STREAM
[in]protoProtocol like IPPROTO_TCP, IPPROTO_UDP
[in]hostremote host name or IP address in string form
[in]portremote port number in host byte order
[in]flagsflags like OSMO_SOCK_F_CONNECT
Returns
socket file descriptor on success; negative on error

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.

References DLGLOBAL, LOGL_ERROR, LOGP, OSMO_SOCK_F_BIND, OSMO_SOCK_F_CONNECT, and OSMO_SOCK_F_NONBLOCK.

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]ofdfile descriptor (will be filled in)
[in]familyAddress Family like AF_INET, AF_INET6, AF_UNSPEC
[in]typeSocket type like SOCK_DGRAM, SOCK_STREAM
[in]protoProtocol like IPPROTO_TCP, IPPROTO_UDP
[in]hostremote host name or IP address in string form
[in]portremote port number in host byte order
[in]flagsflags like OSMO_SOCK_F_CONNECT
Returns
socket fd on success; negative on error

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]sssocket address (will be filled in)
[in]typeSocket type like SOCK_DGRAM, SOCK_STREAM
[in]protoProtocol like IPPROTO_TCP, IPPROTO_UDP
[in]flagsflags like OSMO_SOCK_F_CONNECT
Returns
socket fd on success; negative on error

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

References DLGLOBAL, LOGL_ERROR, LOGP, and 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]typeSocket type like SOCK_DGRAM, SOCK_STREAM
[in]protoProtocol like IPPROTO_TCP, IPPROTO_UDP
[in]socket_pathpath to identify the socket
[in]flagsflags like OSMO_SOCK_F_CONNECT
Returns
socket fd on success; negative on error

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

References DLGLOBAL, LOGL_ERROR, LOGP, OSMO_SOCK_F_BIND, OSMO_SOCK_F_CONNECT, and OSMO_SOCK_F_NONBLOCK.

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]ofdfile descriptor (will be filled in)
[in]typeSocket type like SOCK_DGRAM, SOCK_STREAM
[in]protoProtocol like IPPROTO_TCP, IPPROTO_UDP
[in]socket_pathpath to identify the socket
[in]flagsflags like OSMO_SOCK_F_CONNECT
Returns
socket fd on success; negative on error

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]addrSocket Address
[in]addrlenLength of socket address in bytes
Returns
1 if address is local, 0 otherwise.

References DLGLOBAL, LOGL_ERROR, and LOGP.

Referenced by gsmtap_source_add_sink_fd().