parse_via.c File Reference

VIA parsing automaton. More...

#include <stdlib.h>
#include <string.h>
#include "../dprint.h"
#include "../ut.h"
#include "../mem/mem.h"
#include "../ip_addr.h"
#include "parse_via.h"
#include "parse_def.h"

Include dependency graph for parse_via.c:

Go to the source code of this file.

Enumerations

enum  {
  F_HOST, P_HOST, L_PORT, F_PORT,
  P_PORT, L_PARAM, F_PARAM, P_PARAM,
  L_VIA, F_VIA, F_COMMENT, P_COMMENT,
  F_IP6HOST, P_IP6HOST, F_CRLF, F_LF,
  F_CR, END_OF_HEADER
}
enum  {
  F_SIP = 100, SIP1, SIP2, FIN_SIP,
  L_VER, F_VER, VER1, VER2,
  FIN_VER, UDP1, UDP2, FIN_UDP,
  TCP_TLS1, TCP2, FIN_TCP, TLS2,
  FIN_TLS, SCTP1, SCTP2, SCTP3,
  FIN_SCTP, L_PROTO, F_PROTO
}
enum  {
  L_VALUE = 200, F_VALUE, P_VALUE, P_STRING,
  HIDDEN1, HIDDEN2, HIDDEN3, HIDDEN4,
  HIDDEN5, TTL1, TTL2, BRANCH1,
  BRANCH2, BRANCH3, BRANCH4, BRANCH5,
  MADDR1, MADDR2, MADDR3, MADDR4,
  RECEIVED1, RECEIVED2, RECEIVED3, RECEIVED4,
  RECEIVED5, RECEIVED6, RECEIVED7, RPORT1,
  RPORT2, RPORT3, ALIAS1, ALIAS2,
  ALIAS3, ALIAS4, FIN_HIDDEN = 230, FIN_TTL,
  FIN_BRANCH, FIN_MADDR, FIN_RECEIVED, FIN_RPORT,
  FIN_I, FIN_ALIAS
}

Functions

void free_via_list (struct via_body *vb)
static void free_via_param_list (struct via_param *vp)
char * parse_via (char *buffer, char *end, struct via_body *vbody)
static char * parse_via_param (char *p, char *end, unsigned char *pstate, unsigned char *psaved_state, struct via_param *param)


Detailed Description

VIA parsing automaton.

Definition in file parse_via.c.


Enumeration Type Documentation

anonymous enum

main via states (uri:port ...)

Enumerator:
F_HOST 
P_HOST 
L_PORT 
F_PORT 
P_PORT 
L_PARAM 
F_PARAM 
P_PARAM 
L_VIA 
F_VIA 
F_COMMENT 
P_COMMENT 
F_IP6HOST 
P_IP6HOST 
F_CRLF 
F_LF 
F_CR 
END_OF_HEADER 

Definition at line 62 of file parse_via.c.

anonymous enum

first via part state

Enumerator:
F_SIP 
SIP1 
SIP2 
FIN_SIP 
L_VER 
F_VER 
VER1 
VER2 
FIN_VER 
UDP1 
UDP2 
FIN_UDP 
TCP_TLS1 
TCP2 
FIN_TCP 
TLS2 
FIN_TLS 
SCTP1 
SCTP2 
SCTP3 
FIN_SCTP 
L_PROTO 
F_PROTO 

Definition at line 77 of file parse_via.c.

anonymous enum

param related states

Warning:
keep in sync with parse_via.h, PARAM_HIDDEN..
Enumerator:
L_VALUE 
F_VALUE 
P_VALUE 
P_STRING 
HIDDEN1 
HIDDEN2 
HIDDEN3 
HIDDEN4 
HIDDEN5 
TTL1 
TTL2 
BRANCH1 
BRANCH2 
BRANCH3 
BRANCH4 
BRANCH5 
MADDR1 
MADDR2 
MADDR3 
MADDR4 
RECEIVED1 
RECEIVED2 
RECEIVED3 
RECEIVED4 
RECEIVED5 
RECEIVED6 
RECEIVED7 
RPORT1 
RPORT2 
RPORT3 
ALIAS1 
ALIAS2 
ALIAS3 
ALIAS4 
FIN_HIDDEN 
FIN_TTL 
FIN_BRANCH 
FIN_MADDR 
FIN_RECEIVED 
FIN_RPORT 
FIN_I 
FIN_ALIAS 

Definition at line 93 of file parse_via.c.


Function Documentation

void free_via_list ( struct via_body vb  ) 

Free allocated memory

Definition at line 1969 of file parse_via.c.

References free_via_param_list(), via_body::next, via_body::param_lst, and pkg_free.

Referenced by clean_hdr_field(), encode_header(), get_hdr_field(), and via_diff().

static void free_via_param_list ( struct via_param vp  )  [inline, static]

Definition at line 1958 of file parse_via.c.

References via_param::next, and pkg_free.

Referenced by free_via_list().

char* parse_via ( char *  buffer,
char *  end,
struct via_body vbody 
)

static char* parse_via_param ( char *  p,
char *  end,
unsigned char *  pstate,
unsigned char *  psaved_state,
struct via_param param 
) [static]

entry state must be F_PARAM, or saved_state=F_PARAM and state=F_{LF,CR,CRLF}! output state = L_PARAM or F_PARAM or END_OF_HEADER (and saved_state= last state); everything else => error

Warning:
param->start must be filled before, it's used in param->size computation.

Definition at line 117 of file parse_via.c.

References ALIAS1, ALIAS2, ALIAS3, ALIAS4, BRANCH1, BRANCH2, BRANCH3, BRANCH4, BRANCH5, END_OF_HEADER, F_CR, F_CRLF, F_LF, F_PARAM, F_VALUE, F_VIA, FIN_ALIAS, FIN_BRANCH, FIN_HIDDEN, FIN_I, FIN_MADDR, FIN_RECEIVED, FIN_RPORT, FIN_TTL, GEN_PARAM, HIDDEN1, HIDDEN2, HIDDEN3, HIDDEN4, HIDDEN5, L_PARAM, L_VALUE, _str::len, LM_DBG, LM_ERR, MADDR1, MADDR2, MADDR3, MADDR4, via_param::name, P_STRING, P_VALUE, PARAM_ERROR, PARAM_RPORT, RECEIVED1, RECEIVED2, RECEIVED3, RECEIVED4, RECEIVED5, RECEIVED6, RECEIVED7, RPORT1, RPORT2, RPORT3, _str::s, via_param::size, via_param::start, TTL1, TTL2, via_param::type, via_param::value, and ZSW.

Referenced by parse_via().


Generated on Thu May 24 00:00:40 2012 for Kamailio - The Open Source SIP Server by  doxygen 1.5.6