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.
kamailio/modules/cpl-c/CPL_tree.h

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