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