Browse code

core, lib, modules: restructured source code tree

- new folder src/ to hold the source code for main project applications
- main.c is in src/
- all core files are subfolder are in src/core/
- modules are in src/modules/
- libs are in src/lib/
- application Makefiles are in src/
- application binary is built in src/ (src/kamailio)

Daniel-Constantin Mierla authored on 07/12/2016 11:03:51
Showing 1 changed files
1 1
deleted file mode 100644
... ...
@@ -1,135 +0,0 @@
1
-/* 
2
- * Proxy-Require, Proxy-Authorization Header Field Name Parsing Macros
3
- *
4
- * Copyright (C) 2001-2003 FhG Fokus
5
- *
6
- * This file is part of Kamailio, a free SIP server.
7
- *
8
- * Kamailio is free software; you can redistribute it and/or modify
9
- * it under the terms of the GNU General Public License as published by
10
- * the Free Software Foundation; either version 2 of the License, or
11
- * (at your option) any later version
12
- *
13
- * Kamailio is distributed in the hope that it will be useful,
14
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
15
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16
- * GNU General Public License for more details.
17
- *
18
- * You should have received a copy of the GNU General Public License 
19
- * along with this program; if not, write to the Free Software 
20
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
21
- *
22
- */
23
-
24
-/*! \file 
25
- * \brief Parser :: Proxy-Require, Proxy-Authorization Header Field Name Parsing Macros
26
- *
27
- * \ingroup parser
28
- */
29
-
30
-
31
-#ifndef CASE_PROX_H
32
-#define CASE_PROX_H
33
-
34
-#include "../comp_defs.h"
35
-
36
-#define ION_CASE                           \
37
-        switch(LOWER_DWORD(val)) {         \
38
-        case _ion1_:                       \
39
-	        hdr->type = HDR_PROXYAUTH_T; \
40
-	        hdr->name.len = 19;        \
41
-	        return (p + 4);            \
42
-                                           \
43
-        case _ion2_:                       \
44
-                hdr->type = HDR_PROXYAUTH_T; \
45
-                p += 4;                    \
46
-	        goto dc_end;               \
47
-        }
48
-
49
-
50
-#define IZAT_CASE                  \
51
-        switch(LOWER_DWORD(val)) { \
52
-        case _izat_:               \
53
-                p += 4;            \
54
-                val = READ(p);     \
55
-                ION_CASE;          \
56
-                goto other;        \
57
-        }
58
-
59
-
60
-#define TE_CASE                    \
61
-        switch(LOWER_DWORD(val)&0xffffff) { \
62
-        case _te1_:     /* "te:"*/            \
63
-	        hdr->type = HDR_PROXY_AUTHENTICATE_T; \
64
-	        hdr->name.len = 18;        \
65
-	        return (p + 3);            \
66
-        case _te2_: /* "te " */ \
67
-	        hdr->type = HDR_PROXY_AUTHENTICATE_T; \
68
-	        p+=3; \
69
-            goto dc_end;        \
70
-        }
71
-
72
-
73
-#define TICA_CASE                  \
74
-        switch(LOWER_DWORD(val)) { \
75
-        case _tica_:               \
76
-                p += 4;            \
77
-                val = READ3(p);    \
78
-                TE_CASE;           \
79
-                goto other;        \
80
-        }
81
-
82
-
83
-#define THOR_THEN_CASE             \
84
-        switch(LOWER_DWORD(val)) { \
85
-        case _thor_:               \
86
-                p += 4;            \
87
-                val = READ(p);     \
88
-                IZAT_CASE;         \
89
-                goto other;        \
90
-        case _then_:               \
91
-                p += 4;            \
92
-                val = READ(p);     \
93
-                TICA_CASE;         \
94
-                goto other;        \
95
-        }
96
-
97
-
98
-#define QUIR_CASE                                     \
99
-        switch(LOWER_DWORD(val)) {                    \
100
-        case _quir_:                                  \
101
-	        p += 4;                               \
102
-                switch(LOWER_BYTE(*p)) {              \
103
-                case 'e':                             \
104
-                        hdr->type = HDR_PROXYREQUIRE_T; \
105
-	                p++;                          \
106
-                        goto dc_end;                  \
107
-                }                                     \
108
-                goto other;                           \
109
-        }
110
-
111
-
112
-#define PROX2_CASE                 \
113
-        switch(LOWER_DWORD(val)) { \
114
-        case _y_au_:               \
115
-                p += 4;            \
116
-                val = READ(p);     \
117
-                THOR_THEN_CASE;    \
118
-                goto other;        \
119
-                                   \
120
-        case _y_re_:               \
121
-                p += 4;            \
122
-                val = READ(p);     \
123
-                QUIR_CASE;         \
124
-                goto other;        \
125
-        }
126
-
127
-
128
-#define prox_CASE         \
129
-        p += 4;           \
130
-        val = READ(p);    \
131
-        PROX2_CASE;       \
132
-         goto other;
133
-
134
-
135
-#endif /* CASE_PROX_H */
Browse code

parser Updates to header files, remove history etc

Olle E. Johansson authored on 16/01/2015 16:51:51
Showing 1 changed files
... ...
@@ -3,19 +3,14 @@
3 3
  *
4 4
  * Copyright (C) 2001-2003 FhG Fokus
5 5
  *
6
- * This file is part of ser, a free SIP server.
6
+ * This file is part of Kamailio, a free SIP server.
7 7
  *
8
- * ser is free software; you can redistribute it and/or modify
8
+ * Kamailio is free software; you can redistribute it and/or modify
9 9
  * it under the terms of the GNU General Public License as published by
10 10
  * the Free Software Foundation; either version 2 of the License, or
11 11
  * (at your option) any later version
12 12
  *
13
- * For a license to use the ser software under conditions
14
- * other than those described here, or to purchase support for this
15
- * software, please contact iptel.org by e-mail at the following addresses:
16
- *    info@iptel.org
17
- *
18
- * ser is distributed in the hope that it will be useful,
13
+ * Kamailio is distributed in the hope that it will be useful,
19 14
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
20 15
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
21 16
  * GNU General Public License for more details.
... ...
@@ -24,10 +19,6 @@
24 19
  * along with this program; if not, write to the Free Software 
25 20
  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
26 21
  *
27
- * History:
28
- * --------
29
- * 2003-02-28 scratchpad compatibility abandoned (jiri)
30
- * 2003-01-27 next baby-step to removing ZT - PRESERVE_ZT (jiri)
31 22
  */
32 23
 
33 24
 /*! \file 
Browse code

all: updated FSF address in GPL text

Anthony Messina authored on 04/07/2014 09:36:37 • Daniel-Constantin Mierla committed on 04/07/2014 09:37:36
Showing 1 changed files
... ...
@@ -22,7 +22,7 @@
22 22
  *
23 23
  * You should have received a copy of the GNU General Public License 
24 24
  * along with this program; if not, write to the Free Software 
25
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
25
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
26 26
  *
27 27
  * History:
28 28
  * --------
Browse code

parser: remove old $Id$ docs header from subversion times, not usable anymore

Henning Westerholt authored on 05/07/2012 21:39:51
Showing 1 changed files
... ...
@@ -1,6 +1,4 @@
1 1
 /* 
2
- * $Id$ 
3
- *
4 2
  * Proxy-Require, Proxy-Authorization Header Field Name Parsing Macros
5 3
  *
6 4
  * Copyright (C) 2001-2003 FhG Fokus
Browse code

Doxygen for the parser directory

There's still a lot of files untouched. Feel free to jump in and help!

oej authored on 25/10/2009 15:58:41
Showing 1 changed files
... ...
@@ -32,6 +32,12 @@
32 32
  * 2003-01-27 next baby-step to removing ZT - PRESERVE_ZT (jiri)
33 33
  */
34 34
 
35
+/*! \file 
36
+ * \brief Parser :: Proxy-Require, Proxy-Authorization Header Field Name Parsing Macros
37
+ *
38
+ * \ingroup parser
39
+ */
40
+
35 41
 
36 42
 #ifndef CASE_PROX_H
37 43
 #define CASE_PROX_H
Browse code

- tm: aggregate challenges (WWW/Proxy-Authenticate) from all the 401 & 407 if the final reply is a 401/407 (required by rfc3261). To turn this off and fall back to the old behaviour set tm aggregate_challenges parameter to 0 (see tm docs for more details) - core: header parse support for WWW-Authenticate and Proxy-Authenticate

Andrei Pelinescu-Onciul authored on 16/10/2006 18:44:01
Showing 1 changed files
... ...
@@ -62,13 +62,41 @@
62 62
         }
63 63
 
64 64
 
65
-#define THOR_CASE                  \
65
+#define TE_CASE                    \
66
+        switch(LOWER_DWORD(val)&0xffffff) { \
67
+        case _te1_:     /* "te:"*/            \
68
+	        hdr->type = HDR_PROXY_AUTHENTICATE_T; \
69
+	        hdr->name.len = 18;        \
70
+	        return (p + 3);            \
71
+        case _te2_: /* "te " */ \
72
+	        hdr->type = HDR_PROXY_AUTHENTICATE_T; \
73
+	        p+=3; \
74
+            goto dc_end;        \
75
+        }
76
+
77
+
78
+#define TICA_CASE                  \
79
+        switch(LOWER_DWORD(val)) { \
80
+        case _tica_:               \
81
+                p += 4;            \
82
+                val = READ3(p);    \
83
+                TE_CASE;           \
84
+                goto other;        \
85
+        }
86
+
87
+
88
+#define THOR_THEN_CASE             \
66 89
         switch(LOWER_DWORD(val)) { \
67 90
         case _thor_:               \
68 91
                 p += 4;            \
69 92
                 val = READ(p);     \
70 93
                 IZAT_CASE;         \
71 94
                 goto other;        \
95
+        case _then_:               \
96
+                p += 4;            \
97
+                val = READ(p);     \
98
+                TICA_CASE;         \
99
+                goto other;        \
72 100
         }
73 101
 
74 102
 
... ...
@@ -91,7 +119,7 @@
91 119
         case _y_au_:               \
92 120
                 p += 4;            \
93 121
                 val = READ(p);     \
94
-                THOR_CASE;         \
122
+                THOR_THEN_CASE;    \
95 123
                 goto other;        \
96 124
                                    \
97 125
         case _y_re_:               \
Browse code

- changed parse_headers api, HDR_xxx split into HDR_xxx_F (hdr_flags_t) and HDR_xxx_T (hdr_types_t), for more info read doc/parse_headers.txt. The header flags were extended top 64 bits. Be carefull not to mix types with flags, they won't work!

Andrei Pelinescu-Onciul authored on 23/02/2005 17:16:01
Showing 1 changed files
... ...
@@ -41,12 +41,12 @@
41 41
 #define ION_CASE                           \
42 42
         switch(LOWER_DWORD(val)) {         \
43 43
         case _ion1_:                       \
44
-	        hdr->type = HDR_PROXYAUTH; \
44
+	        hdr->type = HDR_PROXYAUTH_T; \
45 45
 	        hdr->name.len = 19;        \
46 46
 	        return (p + 4);            \
47 47
                                            \
48 48
         case _ion2_:                       \
49
-                hdr->type = HDR_PROXYAUTH; \
49
+                hdr->type = HDR_PROXYAUTH_T; \
50 50
                 p += 4;                    \
51 51
 	        goto dc_end;               \
52 52
         }
... ...
@@ -78,7 +78,7 @@
78 78
 	        p += 4;                               \
79 79
                 switch(LOWER_BYTE(*p)) {              \
80 80
                 case 'e':                             \
81
-                        hdr->type = HDR_PROXYREQUIRE; \
81
+                        hdr->type = HDR_PROXYREQUIRE_T; \
82 82
 	                p++;                          \
83 83
                         goto dc_end;                  \
84 84
                 }                                     \
Browse code

- Spelling checked

Jan Janak authored on 24/08/2004 09:01:24
Showing 1 changed files
... ...
@@ -3,7 +3,7 @@
3 3
  *
4 4
  * Proxy-Require, Proxy-Authorization Header Field Name Parsing Macros
5 5
  *
6
- * Copyright (C) 2001-2003 Fhg Fokus
6
+ * Copyright (C) 2001-2003 FhG Fokus
7 7
  *
8 8
  * This file is part of ser, a free SIP server.
9 9
  *
Browse code

elderly (un)defs junked (hopefuly the right ones)

Jiri Kuthan authored on 28/02/2003 14:12:25
Showing 1 changed files
... ...
@@ -28,6 +28,7 @@
28 28
  *
29 29
  * History:
30 30
  * --------
31
+ * 2003-02-28 scratchpad compatibility abandoned (jiri)
31 32
  * 2003-01-27 next baby-step to removing ZT - PRESERVE_ZT (jiri)
32 33
  */
33 34
 
... ...
@@ -42,7 +43,6 @@
42 43
         case _ion1_:                       \
43 44
 	        hdr->type = HDR_PROXYAUTH; \
44 45
 	        hdr->name.len = 19;        \
45
-            SET_ZT(*(p + 3));          \
46 46
 	        return (p + 4);            \
47 47
                                            \
48 48
         case _ion2_:                       \
Browse code

- fixed typo (izat_case defined twice in case_prox.h)

Andrei Pelinescu-Onciul authored on 28/01/2003 16:48:56
Showing 1 changed files
... ...
@@ -51,9 +51,6 @@
51 51
 	        goto dc_end;               \
52 52
         }
53 53
 
54
-#define IZAT_CASE                  \
55
-        switch(LOWER_DWORD(val)) { \
56
-
57 54
 
58 55
 #define IZAT_CASE                  \
59 56
         switch(LOWER_DWORD(val)) { \
Browse code

parser changed to make body to point to body (w/o LWS), have a len encompassing the complete hf (name.s..CRLF) and not to put zero- terminators after header field names and cseq

Jiri Kuthan authored on 27/01/2003 21:19:48
Showing 1 changed files
... ...
@@ -25,19 +25,24 @@
25 25
  * You should have received a copy of the GNU General Public License 
26 26
  * along with this program; if not, write to the Free Software 
27 27
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
28
+ *
29
+ * History:
30
+ * --------
31
+ * 2003-01-27 next baby-step to removing ZT - PRESERVE_ZT (jiri)
28 32
  */
29 33
 
30 34
 
31 35
 #ifndef CASE_PROX_H
32 36
 #define CASE_PROX_H
33 37
 
38
+#include "../comp_defs.h"
34 39
 
35 40
 #define ION_CASE                           \
36 41
         switch(LOWER_DWORD(val)) {         \
37 42
         case _ion1_:                       \
38 43
 	        hdr->type = HDR_PROXYAUTH; \
39 44
 	        hdr->name.len = 19;        \
40
-                *(p + 3) = '\0';           \
45
+            SET_ZT(*(p + 3));          \
41 46
 	        return (p + 4);            \
42 47
                                            \
43 48
         case _ion2_:                       \
... ...
@@ -46,6 +51,9 @@
46 51
 	        goto dc_end;               \
47 52
         }
48 53
 
54
+#define IZAT_CASE                  \
55
+        switch(LOWER_DWORD(val)) { \
56
+
49 57
 
50 58
 #define IZAT_CASE                  \
51 59
         switch(LOWER_DWORD(val)) { \
Browse code

Faster parse_hname function, hash table removed, several minor optimizations

Jan Janak authored on 18/11/2002 19:08:16
Showing 1 changed files
... ...
@@ -1,7 +1,7 @@
1
-/*
2
- * $Id$
1
+/* 
2
+ * $Id$ 
3 3
  *
4
- * Proxy-Authorization and Proxy-Require header field parser macros
4
+ * Proxy-Require, Proxy-Authorization Header Field Name Parsing Macros
5 5
  *
6 6
  * Copyright (C) 2001-2003 Fhg Fokus
7 7
  *
... ...
@@ -33,7 +33,7 @@
33 33
 
34 34
 
35 35
 #define ION_CASE                           \
36
-        switch(val) {                      \
36
+        switch(LOWER_DWORD(val)) {         \
37 37
         case _ion1_:                       \
38 38
 	        hdr->type = HDR_PROXYAUTH; \
39 39
 	        hdr->name.len = 19;        \
... ...
@@ -47,39 +47,32 @@
47 47
         }
48 48
 
49 49
 
50
-#define IZAT_CASE                 \
51
-        switch(val) {             \
52
-        case _izat_:              \
53
-                p += 4;           \
54
-                val = READ(p);    \
55
-                ION_CASE;         \
56
-                                  \
57
-                val = unify(val); \
58
-                ION_CASE;         \
59
-                goto other;       \
50
+#define IZAT_CASE                  \
51
+        switch(LOWER_DWORD(val)) { \
52
+        case _izat_:               \
53
+                p += 4;            \
54
+                val = READ(p);     \
55
+                ION_CASE;          \
56
+                goto other;        \
60 57
         }
61 58
 
62 59
 
63
-#define THOR_CASE                 \
64
-        switch(val) {             \
65
-        case _thor_:              \
66
-                p += 4;           \
67
-                val = READ(p);    \
68
-                IZAT_CASE;        \
69
-                                  \
70
-                val = unify(val); \
71
-                IZAT_CASE;        \
72
-                goto other;       \
60
+#define THOR_CASE                  \
61
+        switch(LOWER_DWORD(val)) { \
62
+        case _thor_:               \
63
+                p += 4;            \
64
+                val = READ(p);     \
65
+                IZAT_CASE;         \
66
+                goto other;        \
73 67
         }
74 68
 
75 69
 
76 70
 #define QUIR_CASE                                     \
77
-        switch(val) {                                 \
71
+        switch(LOWER_DWORD(val)) {                    \
78 72
         case _quir_:                                  \
79 73
 	        p += 4;                               \
80
-                switch(*p) {                          \
74
+                switch(LOWER_BYTE(*p)) {              \
81 75
                 case 'e':                             \
82
-                case 'E':                             \
83 76
                         hdr->type = HDR_PROXYREQUIRE; \
84 77
 	                p++;                          \
85 78
                         goto dc_end;                  \
... ...
@@ -88,36 +81,27 @@
88 81
         }
89 82
 
90 83
 
91
-#define PROX2_CASE                \
92
-        switch(val) {             \
93
-        case _y_Au_:              \
94
-                p += 4;           \
95
-                val = READ(p);    \
96
-                THOR_CASE;        \
97
-                                  \
98
-                val = unify(val); \
99
-                THOR_CASE;        \
100
-                goto other;       \
101
-                                  \
102
-        case _y_Re_:              \
103
-                p += 4;           \
104
-                val = READ(p);    \
105
-                QUIR_CASE;        \
106
-                                  \
107
-                val = unify(val); \
108
-                QUIR_CASE;        \
109
-                goto other;       \
84
+#define PROX2_CASE                 \
85
+        switch(LOWER_DWORD(val)) { \
86
+        case _y_au_:               \
87
+                p += 4;            \
88
+                val = READ(p);     \
89
+                THOR_CASE;         \
90
+                goto other;        \
91
+                                   \
92
+        case _y_re_:               \
93
+                p += 4;            \
94
+                val = READ(p);     \
95
+                QUIR_CASE;         \
96
+                goto other;        \
110 97
         }
111 98
 
112 99
 
113
-#define Prox_CASE         \
100
+#define prox_CASE         \
114 101
         p += 4;           \
115 102
         val = READ(p);    \
116 103
         PROX2_CASE;       \
117
-                          \
118
-        val = unify(val); \
119
-        PROX2_CASE;       \
120
-        goto other;
104
+         goto other;
121 105
 
122 106
 
123 107
 #endif /* CASE_PROX_H */
Browse code

GPLization banner introduced to *.[hc] files

Jiri Kuthan authored on 19/09/2002 12:23:52
Showing 1 changed files
... ...
@@ -2,8 +2,32 @@
2 2
  * $Id$
3 3
  *
4 4
  * Proxy-Authorization and Proxy-Require header field parser macros
5
+ *
6
+ * Copyright (C) 2001-2003 Fhg Fokus
7
+ *
8
+ * This file is part of ser, a free SIP server.
9
+ *
10
+ * ser is free software; you can redistribute it and/or modify
11
+ * it under the terms of the GNU General Public License as published by
12
+ * the Free Software Foundation; either version 2 of the License, or
13
+ * (at your option) any later version
14
+ *
15
+ * For a license to use the ser software under conditions
16
+ * other than those described here, or to purchase support for this
17
+ * software, please contact iptel.org by e-mail at the following addresses:
18
+ *    info@iptel.org
19
+ *
20
+ * ser is distributed in the hope that it will be useful,
21
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
22
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
23
+ * GNU General Public License for more details.
24
+ *
25
+ * You should have received a copy of the GNU General Public License 
26
+ * along with this program; if not, write to the Free Software 
27
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
5 28
  */
6 29
 
30
+
7 31
 #ifndef CASE_PROX_H
8 32
 #define CASE_PROX_H
9 33
 
Browse code

*** empty log message ***

Jan Janak authored on 12/08/2002 12:04:50
Showing 1 changed files
... ...
@@ -96,4 +96,4 @@
96 96
         goto other;
97 97
 
98 98
 
99
-#endif
99
+#endif /* CASE_PROX_H */
Browse code

New header field name parser

Jan Janak authored on 25/07/2002 12:28:26
Showing 1 changed files
1 1
new file mode 100644
... ...
@@ -0,0 +1,99 @@
1
+/*
2
+ * $Id$
3
+ *
4
+ * Proxy-Authorization and Proxy-Require header field parser macros
5
+ */
6
+
7
+#ifndef CASE_PROX_H
8
+#define CASE_PROX_H
9
+
10
+
11
+#define ION_CASE                           \
12
+        switch(val) {                      \
13
+        case _ion1_:                       \
14
+	        hdr->type = HDR_PROXYAUTH; \
15
+	        hdr->name.len = 19;        \
16
+                *(p + 3) = '\0';           \
17
+	        return (p + 4);            \
18
+                                           \
19
+        case _ion2_:                       \
20
+                hdr->type = HDR_PROXYAUTH; \
21
+                p += 4;                    \
22
+	        goto dc_end;               \
23
+        }
24
+
25
+
26
+#define IZAT_CASE                 \
27
+        switch(val) {             \
28
+        case _izat_:              \
29
+                p += 4;           \
30
+                val = READ(p);    \
31
+                ION_CASE;         \
32
+                                  \
33
+                val = unify(val); \
34
+                ION_CASE;         \
35
+                goto other;       \
36
+        }
37
+
38
+
39
+#define THOR_CASE                 \
40
+        switch(val) {             \
41
+        case _thor_:              \
42
+                p += 4;           \
43
+                val = READ(p);    \
44
+                IZAT_CASE;        \
45
+                                  \
46
+                val = unify(val); \
47
+                IZAT_CASE;        \
48
+                goto other;       \
49
+        }
50
+
51
+
52
+#define QUIR_CASE                                     \
53
+        switch(val) {                                 \
54
+        case _quir_:                                  \
55
+	        p += 4;                               \
56
+                switch(*p) {                          \
57
+                case 'e':                             \
58
+                case 'E':                             \
59
+                        hdr->type = HDR_PROXYREQUIRE; \
60
+	                p++;                          \
61
+                        goto dc_end;                  \
62
+                }                                     \
63
+                goto other;                           \
64
+        }
65
+
66
+
67
+#define PROX2_CASE                \
68
+        switch(val) {             \
69
+        case _y_Au_:              \
70
+                p += 4;           \
71
+                val = READ(p);    \
72
+                THOR_CASE;        \
73
+                                  \
74
+                val = unify(val); \
75
+                THOR_CASE;        \
76
+                goto other;       \
77
+                                  \
78
+        case _y_Re_:              \
79
+                p += 4;           \
80
+                val = READ(p);    \
81
+                QUIR_CASE;        \
82
+                                  \
83
+                val = unify(val); \
84
+                QUIR_CASE;        \
85
+                goto other;       \
86
+        }
87
+
88
+
89
+#define Prox_CASE         \
90
+        p += 4;           \
91
+        val = READ(p);    \
92
+        PROX2_CASE;       \
93
+                          \
94
+        val = unify(val); \
95
+        PROX2_CASE;       \
96
+        goto other;
97
+
98
+
99
+#endif