mirror of https://github.com/sipwise/kamailio.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
220 lines
7.9 KiB
220 lines
7.9 KiB
/*
|
|
* $Id$
|
|
*
|
|
* Copyright (C) 2001-2003 FhG Fokus
|
|
*
|
|
* This file is part of Kamailio, a free SIP server.
|
|
*
|
|
* Kamailio is free software; you can redistribute it and/or modify
|
|
* it under the terms of the GNU General Public License as published by
|
|
* the Free Software Foundation; either version 2 of the License, or
|
|
* (at your option) any later version
|
|
*
|
|
* Kamailio is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
* GNU General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU General Public License
|
|
* along with this program; if not, write to the Free Software
|
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
|
*/
|
|
|
|
#ifndef _CPL_TREE_DEFINITION_H
|
|
#define _CPL_TREE_DEFINITION_H
|
|
|
|
|
|
|
|
#define CPL_NODE 1
|
|
#define INCOMING_NODE 2
|
|
#define OUTGOING_NODE 3
|
|
#define ANCILLARY_NODE 4
|
|
#define SUBACTION_NODE 5
|
|
#define ADDRESS_SWITCH_NODE 6
|
|
#define ADDRESS_NODE 7
|
|
#define BUSY_NODE 8
|
|
#define DEFAULT_NODE 9
|
|
#define FAILURE_NODE 10
|
|
#define LOG_NODE 11
|
|
#define LOOKUP_NODE 12
|
|
#define LOCATION_NODE 13
|
|
#define LANGUAGE_NODE 14
|
|
#define LANGUAGE_SWITCH_NODE 15
|
|
#define MAIL_NODE 16
|
|
#define NOTFOUND_NODE 17
|
|
#define NOANSWER_NODE 18
|
|
#define PROXY_NODE 19
|
|
#define PRIORITY_NODE 20
|
|
#define PRIORITY_SWITCH_NODE 21
|
|
#define REJECT_NODE 22
|
|
#define REDIRECT_NODE 23
|
|
#define REDIRECTION_NODE 24
|
|
#define REMOVE_LOCATION_NODE 25
|
|
#define SUB_NODE 26
|
|
#define SUCCESS_NODE 27
|
|
#define STRING_NODE 28
|
|
#define STRING_SWITCH_NODE 29
|
|
#define TIME_NODE 30
|
|
#define TIME_SWITCH_NODE 31
|
|
#define OTHERWISE_NODE 32
|
|
#define NOT_PRESENT_NODE 33
|
|
|
|
|
|
|
|
/* attributes and values fro ADDRESS-SWITCH node */
|
|
#define FIELD_ATTR 0 /*shared with STRING_SWITCH*/
|
|
#define SUBFIELD_ATTR 1
|
|
#define ORIGIN_VAL 0
|
|
#define DESTINATION_VAL 1
|
|
#define ORIGINAL_DESTINATION_VAL 2
|
|
#define ADDRESS_TYPE_VAL 0
|
|
#define USER_VAL 1
|
|
#define HOST_VAL 2
|
|
#define PORT_VAL 3
|
|
#define TEL_VAL 4
|
|
#define DISPLAY_VAL 5 /*shared with STRING*/
|
|
|
|
/* attributes and values for ADDRESS node */
|
|
#define IS_ATTR 0 /*shared with STRING*/
|
|
#define CONTAINS_ATTR 1 /*shared with STRING*/
|
|
#define SUBDOMAIN_OF_ATTR 2
|
|
|
|
/* attributes and values for STRING-SWITCH node */
|
|
#define SUBJECT_VAL 0
|
|
#define ORGANIZATION_VAL 1
|
|
#define USER_AGENT_VAL 2
|
|
|
|
/* attributes and values for LANGUAGE node */
|
|
#define MATCHES_TAG_ATTR 0
|
|
#define MATCHES_SUBTAG_ATTR 1
|
|
|
|
/* attributes and values for TIME-SWITCH node */
|
|
#define TZID_ATTR 0
|
|
#define TZURL_ATTR 1
|
|
|
|
/* attributes and values for TIME node */
|
|
#define DTSTART_ATTR 0
|
|
#define DTEND_ATTR 1
|
|
#define DURATION_ATTR 2
|
|
#define FREQ_ATTR 3
|
|
#define INTERVAL_ATTR 4
|
|
#define UNTIL_ATTR 5
|
|
#define COUNT_ATTR 6
|
|
#define BYSECOND_ATTR 7
|
|
#define BYMINUTE_ATTR 8
|
|
#define BYHOUR_ATTR 9
|
|
#define BYDAY_ATTR 10
|
|
#define BYMONTHDAY_ATTR 11
|
|
#define BYYEARDAY_ATTR 12
|
|
#define BYWEEKNO_ATTR 13
|
|
#define BYMONTH_ATTR 14
|
|
#define WKST_ATTR 15
|
|
#define BYSETPOS_ATTR 16
|
|
|
|
/* attributes and values for PRIORITY node */
|
|
#define LESS_ATTR 0
|
|
#define GREATER_ATTR 1
|
|
#define EQUAL_ATTR 2
|
|
#define PRIOSTR_ATTR 3
|
|
#define EMERGENCY_VAL 0
|
|
#define EMERGENCY_STR "emergency"
|
|
#define EMERGENCY_STR_LEN (sizeof(EMERGENCY_STR)-1)
|
|
#define URGENT_VAL 1
|
|
#define URGENT_STR "urgent"
|
|
#define URGENT_STR_LEN (sizeof(URGENT_STR)-1)
|
|
#define NORMAL_VAL 2
|
|
#define NORMAL_STR "normal"
|
|
#define NORMAL_STR_LEN (sizeof(NORMAL_STR)-1)
|
|
#define NON_URGENT_VAL 3
|
|
#define NON_URGENT_STR "non-urgent"
|
|
#define NON_URGENT_STR_LEN (sizeof(NON_URGENT_STR)-1)
|
|
#define UNKNOWN_PRIO_VAL 4
|
|
|
|
/* attributes and values for LOCATION node */
|
|
#define URL_ATTR 0
|
|
#define PRIORITY_ATTR 1
|
|
#define CLEAR_ATTR 2 /*shared with LOOKUP node*/
|
|
#define NO_VAL 0 /*shared with LOOKUP node*/
|
|
#define YES_VAL 1 /*shared with LOOKUP node*/
|
|
|
|
/* attributes and values for LOOKUP node */
|
|
#define SOURCE_ATTR 0
|
|
#define TIMEOUT_ATTR 1 /*shared with PROXY node*/
|
|
#define SOURCE_REG_STR "registration"
|
|
#define SOURCE_REG_STR_LEN (sizeof("registration")-1)
|
|
|
|
/* attributes and values for REMOVE_LOCATION node */
|
|
#define LOCATION_ATTR 0
|
|
#define PARAM_ATTR 1
|
|
#define VALUE_ATTR 2
|
|
|
|
/* attributes and values for PROXY node */
|
|
#define RECURSE_ATTR 2
|
|
#define ORDERING_ATTR 3
|
|
#define PARALLEL_VAL 0
|
|
#define SEQUENTIAL_VAL 1
|
|
#define FIRSTONLY_VAL 2
|
|
|
|
/* attributes and values for REDIRECT node */
|
|
#define PERMANENT_ATTR 0
|
|
|
|
/* attributes and values for REJECT node */
|
|
#define STATUS_ATTR 0
|
|
#define REASON_ATTR 1
|
|
#define BUSY_VAL 486
|
|
#define BUSY_STR "busy"
|
|
#define BUSY_STR_LEN (sizeof(BUSY_STR)-1)
|
|
#define NOTFOUND_VAL 404
|
|
#define NOTFOUND_STR "notfound"
|
|
#define NOTFOUND_STR_LEN (sizeof(NOTFOUND_STR)-1)
|
|
#define REJECT_VAL 603
|
|
#define REJECT_STR "reject"
|
|
#define REJECT_STR_LEN (sizeof(REJECT_STR)-1)
|
|
#define ERROR_VAL 500
|
|
#define ERROR_STR "error"
|
|
#define ERROR_STR_LEN (sizeof(ERROR_STR)-1)
|
|
|
|
/* attributes and values for LOG node */
|
|
#define NAME_ATTR 0
|
|
#define MAX_NAME_SIZE 32
|
|
#define COMMENT_ATTR 1
|
|
#define MAX_COMMENT_SIZE 128
|
|
|
|
/* attributes and values for EMAIL node */
|
|
#define TO_ATTR 0
|
|
#define SUBJECT_ATTR 1
|
|
#define SUBJECT_EMAILHDR_STR "subject"
|
|
#define SUBJECT_EMAILHDR_LEN (sizeof(SUBJECT_EMAILHDR_STR)-1)
|
|
#define BODY_ATTR 2
|
|
#define BODY_EMAILHDR_STR "body"
|
|
#define BODY_EMAILHDR_LEN (sizeof(BODY_EMAILHDR_STR)-1)
|
|
#define URL_MAILTO_STR "mailto:"
|
|
#define URL_MAILTO_LEN (sizeof(URL_MAILTO_STR)-1)
|
|
|
|
/* attributes and values for SUB node */
|
|
#define REF_ATTR 0
|
|
|
|
|
|
|
|
/* node = | type(1) | nr_kids(1) | nr_attrs(1) | unused(1) |
|
|
* | x*kids_offset(2) | y*attrs(2*n) |
|
|
*/
|
|
|
|
#define NODE_TYPE(_p) ( *((unsigned char*)(_p)) )
|
|
#define NR_OF_KIDS(_p) ( *((unsigned char* )((_p)+1)) )
|
|
#define NR_OF_ATTR(_p) ( *((unsigned char* )((_p)+1+1)) )
|
|
#define KID_OFFSET_PTR(_p,_n) ( (unsigned short*)((_p)+4+2*(_n)) )
|
|
#define ATTR_PTR(_p) ( (_p)+4+2*NR_OF_KIDS(_p) )
|
|
#define SIMPLE_NODE_SIZE(_p) ( 4+2*NR_OF_KIDS(_p) )
|
|
#define GET_NODE_SIZE(_n) ( 4+2*(_n) )
|
|
#define BASIC_ATTR_SIZE 4
|
|
|
|
#define SET_KID_OFFSET(_p,_n,_o) *KID_OFFSET_PTR(_p,_n)=htons(_o)
|
|
#define KID_OFFSET(_p,_n) ntohs(*KID_OFFSET_PTR(_p,_n))
|
|
|
|
|
|
|
|
|
|
#endif
|
|
|