FreeCalypso > hg > themwi-system-sw
view libutil/sockinit.c @ 176:f5c4f9a764be
osmo-bts-rtp-bfi.patch: updated version
This version of the osmo-bts patch sets the TAF bit correctly
in generated RTP BFI packets, correctly generates RTP BFI in the
case of FACCH stealing on sysmoBTS, and removes one EFR-specific
bogon from sysmoBTS code.
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Fri, 17 Feb 2023 18:27:03 -0800 |
parents | dbc0a8677b69 |
children |
line wrap: on
line source
/* * This library module implements a function that helps initialize * sockaddr for bind or connect operations on UNIX domain sockets. * * Back when I programmed under 4.3BSD UNIX, this operation was simple * and straightforward - but under "modern" Unixes, it appears to be * a complex affair, given the messy code (originally copied from * Osmocom) that appears in FreeCalypso host tools for the rvinterf * local socket interface. Hence I am factoring that mess out into * its own library function this time around. */ #include <sys/types.h> #include <sys/socket.h> #include <sys/un.h> #include <string.h> #include <strings.h> void fill_sockaddr_un(pathname, sunp, lenp) char *pathname; struct sockaddr_un *sunp; unsigned *lenp; { /* local socket binding voodoo copied from osmocon */ sunp->sun_family = AF_UNIX; strncpy(sunp->sun_path, pathname, sizeof(sunp->sun_path)); sunp->sun_path[sizeof(sunp->sun_path) - 1] = '\0'; /* we use the same magic that X11 uses in Xtranssock.c for * calculating the proper length of the sockaddr */ #if defined(BSD44SOCKETS) || defined(__UNIXWARE__) sunp->sun_len = strlen(sunp->sun_path); #endif #if defined(BSD44SOCKETS) || defined(SUN_LEN) *lenp = SUN_LEN(sunp); #else *lenp = strlen(sunp->sun_path) + offsetof(struct sockaddr_un, sun_path) + 1; #endif }