datagram_fnc.c File Reference

MI_DATAGRAM :: Datagram functions. More...

#include <arpa/inet.h>
#include <errno.h>
#include <fcntl.h>
#include <netinet/in.h>
#include <netdb.h>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <sys/un.h>
#include <sys/socket.h>
#include <sys/stat.h>
#include <sys/types.h>
#include <unistd.h>
#include <signal.h>
#include "../../resolve.h"
#include "mi_datagram.h"
#include "datagram_fnc.h"
#include "mi_datagram_parser.h"
#include "mi_datagram_writer.h"

Include dependency graph for datagram_fnc.c:

Go to the source code of this file.

Defines

#define AF_LOCAL   AF_UNIX
#define mi_create_dtgram_replysocket(_socketfd, _socket_domain, _err)
#define SUN_LEN(sa)

Functions

static struct mi_handlerbuild_async_handler (unsigned int sock_domain, struct sockaddr *reply_addr, unsigned int reply_addr_len)
static void datagram_close_async (struct mi_root *mi_rpl, struct mi_handler *hdl, int done)
static void free_async_handler (struct mi_handler *hdl)
static int identify_command (datagram_stream *dtgram, struct mi_cmd **f)
void mi_datagram_server (int rx_sock, int tx_sock)
int mi_init_datagram_buffer (void)
int mi_init_datagram_server (sockaddr_dtgram *addr, unsigned int socket_domain, rx_tx_sockets *socks, int mode, int uid, int gid)
static int mi_send_dgram (int fd, char *buf, unsigned int len, const struct sockaddr *to, int tolen, int timeout)
static int mi_sock_check (int fd, char *fname)
 reply socket security checks: checks if fd is a socket, is not hardlinked and it's not a softlink opened file descriptor + file name (for soft link check)

Variables

int flags
static char * mi_buf = 0
static unsigned int mi_socket_domain
int mi_socket_timeout
union {
   struct sockaddr_in   in
   struct sockaddr_un   un
reply_addr
static unsigned int reply_addr_len


Detailed Description

MI_DATAGRAM :: Datagram functions.

Definition in file datagram_fnc.c.


Define Documentation

#define AF_LOCAL   AF_UNIX

Definition at line 63 of file datagram_fnc.c.

#define mi_create_dtgram_replysocket ( _socketfd,
_socket_domain,
_err   ) 

Definition at line 81 of file datagram_fnc.c.

Referenced by datagram_close_async(), and mi_init_datagram_server().

#define SUN_LEN ( sa   ) 

Value:

( strlen((sa)->sun_path) + \
                (size_t)(((struct sockaddr_un*)0)->sun_path) )

Definition at line 58 of file datagram_fnc.c.

Referenced by mi_init_datagram_server(), and write_to_unixsock().


Function Documentation

static struct mi_handler* build_async_handler ( unsigned int  sock_domain,
struct sockaddr *  reply_addr,
unsigned int  reply_addr_len 
) [static, read]

static void datagram_close_async ( struct mi_root mi_rpl,
struct mi_handler hdl,
int  done 
) [static]

static void free_async_handler ( struct mi_handler hdl  )  [inline, static]

Definition at line 318 of file datagram_fnc.c.

References shm_free.

static int identify_command ( datagram_stream dtgram,
struct mi_cmd **  f 
) [static]

void mi_datagram_server ( int  rx_sock,
int  tx_sock 
)

int mi_init_datagram_buffer ( void   ) 

Definition at line 175 of file datagram_fnc.c.

References DATAGRAM_SOCK_BUF_SIZE, LM_ERR, mi_buf, NULL, and pkg_malloc.

Referenced by datagram_process().

int mi_init_datagram_server ( sockaddr_dtgram addr,
unsigned int  socket_domain,
rx_tx_sockets socks,
int  mode,
int  uid,
int  gid 
)

static int mi_send_dgram ( int  fd,
char *  buf,
unsigned int  len,
const struct sockaddr *  to,
int  tolen,
int  timeout 
) [static]

Definition at line 237 of file datagram_fnc.c.

References DATAGRAM_SOCK_BUF_SIZE, and LM_DBG.

Referenced by datagram_close_async(), and mi_datagram_server().

int mi_sock_check ( int  fd,
char *  fname 
) [static]

reply socket security checks: checks if fd is a socket, is not hardlinked and it's not a softlink opened file descriptor + file name (for soft link check)

Returns:
0 if ok, <0 if not

Definition at line 189 of file datagram_fnc.c.

References LM_ERR.

Referenced by mi_init_datagram_server().


Variable Documentation

int flags

Definition at line 66 of file datagram_fnc.c.

struct sockaddr_in in

Definition at line 71 of file datagram_fnc.c.

Referenced by pv_table_add().

char* mi_buf = 0 [static]

Definition at line 67 of file datagram_fnc.c.

unsigned int mi_socket_domain [static]

Timeout for sending replies in milliseconds

Definition at line 90 of file mi_datagram.c.

Referenced by datagram_close_async(), and mi_datagram_server().

union { ... } reply_addr [static]

unsigned int reply_addr_len [static]

Definition at line 74 of file datagram_fnc.c.

Referenced by datagram_close_async(), and mi_datagram_server().

struct sockaddr_un un

Definition at line 70 of file datagram_fnc.c.


Generated on Mon May 21 18:00:38 2012 for Kamailio - The Open Source SIP Server by  doxygen 1.5.6