00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030 #ifndef _EXEC_HF_H
00031 #define _EXEC_HF_H
00032
00033 #include "../../parser/msg_parser.h"
00034
00035
00036 #define SIP "SIP_"
00037 #define HF_PREFIX SIP "HF_"
00038 #define HF_PREFIX_LEN (sizeof(HF_PREFIX)-1)
00039
00040 #define EV_SRCIP SIP "SRCIP"
00041 #define EV_RURI SIP "RURI"
00042 #define EV_ORURI SIP "ORUI"
00043 #define EV_USER SIP "USER"
00044 #define EV_OUSER SIP "OUSER"
00045 #define EV_TID SIP "TID"
00046 #define EV_DID SIP "DID"
00047
00048 #define EV_ASSIGN '='
00049
00050 #define HF_SEPARATOR ','
00051
00052
00053
00054 #define UNRESERVED_MARK "-_.!~*'()"
00055 #define HNV_UNRESERVED "[]/?:+$"
00056 #define ESCAPE '%'
00057
00058
00059 #define HFN_SYMBOL '_'
00060
00061 #define VAR_VIA "VIA"
00062 #define VAR_VIA_LEN (sizeof(VAR_VIA)-1)
00063 #define VAR_CTYPE "CONTENT_TYPE"
00064 #define VAR_CTYPE_LEN (sizeof(VAR_CTYPE)-1)
00065 #define VAR_FROM "FROM"
00066 #define VAR_FROM_LEN (sizeof(VAR_FROM)-1)
00067 #define VAR_CALLID "CALLID"
00068 #define VAR_CALLID_LEN (sizeof(VAR_CALLID)-1)
00069 #define VAR_SUPPORTED "SUPPORTED"
00070 #define VAR_SUPPORTED_LEN (sizeof(VAR_SUPPORTED)-1)
00071 #define VAR_CLEN "CONTENT_LENGTH"
00072 #define VAR_CLEN_LEN (sizeof(VAR_CLEN)-1)
00073 #define VAR_CONTACT "CONTACT"
00074 #define VAR_CONTACT_LEN (sizeof(VAR_CONTACT)-1)
00075 #define VAR_TO "TO"
00076 #define VAR_TO_LEN (sizeof(VAR_TO)-1)
00077 #define VAR_EVENT "EVENT"
00078 #define VAR_EVENT_LEN (sizeof(VAR_EVENT)-1)
00079
00080
00081
00082 #if 0
00083
00084 struct hdr_field {
00085 int type;
00086 str name;
00087 str body;
00088 void* parsed;
00089 struct hdr_field* next;
00090 };
00091 #endif
00092
00093 typedef struct env {
00094 char** env;
00095 int old_cnt;
00096 } environment_t;
00097
00098 struct attrval {
00099 str attr;
00100 str val;
00101 };
00102
00103 enum wrapper_type { W_HF=1, W_AV };
00104
00105 struct hf_wrapper {
00106 enum wrapper_type var_type;
00107 union {
00108 struct hdr_field *hf;
00109 struct attrval av;
00110 } u;
00111
00112 struct hf_wrapper *next_same;
00113
00114 struct hf_wrapper *next_other;
00115
00116 char *envvar;
00117
00118 char *prefix;
00119 int prefix_len;
00120 };
00121
00122 extern unsigned int setvars;
00123 extern char **environ;
00124
00125 environment_t *set_env(struct sip_msg *msg);
00126 void unset_env(environment_t *backup_env);
00127
00128 #endif