Browse code

- diversion and remote-party-id parsing macros

Jan Janak authored on 18/01/2004 16:17:56
Showing 2 changed files
1 1
new file mode 100644
... ...
@@ -0,0 +1,55 @@
1
+/* 
2
+ * $Id$ 
3
+ *
4
+ * Diversion Header Field Parsing 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
28
+ */
29
+
30
+
31
+#ifndef CASE_DIVE_H
32
+#define CASE_DIVE_H
33
+
34
+
35
+#define RSIO_CASE                                  \
36
+        switch(LOWER_DWORD(val)) {                 \
37
+        case _rsio_:                               \
38
+	        p += 4;                            \
39
+	        if (LOWER_BYTE(*p) == 'n') {       \
40
+		        hdr->type = HDR_DIVERSION; \
41
+                        p++;                       \
42
+                        goto dc_end;               \
43
+                }                                  \
44
+                goto other;                        \
45
+        }
46
+
47
+
48
+#define dive_CASE         \
49
+        p += 4;           \
50
+        val = READ(p);    \
51
+        RSIO_CASE;        \
52
+        goto other;
53
+
54
+
55
+#endif /* CASE_DIVE_H */
0 56
new file mode 100644
... ...
@@ -0,0 +1,72 @@
1
+/* 
2
+ * $Id$ 
3
+ *
4
+ * Remote-Party-ID Header Field Name Parsing 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
28
+ */
29
+
30
+#ifndef CASE_REMO_H
31
+#define CASE_REMO_H
32
+
33
+
34
+#define _ID_CASE                         \
35
+        switch(LOWER_DWORD(val)) {       \
36
+        case __id1_:                     \
37
+	        hdr->type = HDR_RPID;    \
38
+	        hdr->name.len = 15;      \
39
+	        return (p + 4);          \
40
+                                         \
41
+        case __id2_:                     \
42
+                hdr->type = HDR_RPID;    \
43
+                p += 4;                  \
44
+	        goto dc_end;             \
45
+        }
46
+
47
+#define ARTY_CASE                         \
48
+        if (LOWER_DWORD(val) == _arty_) { \
49
+	        p += 4;                   \
50
+                val = READ(p);            \
51
+                _ID_CASE;                 \
52
+		goto other;               \
53
+	}
54
+	             
55
+
56
+#define TE_P_CASE                          \
57
+        if (LOWER_DWORD(val) == _te_p_) {  \
58
+                p += 4;                    \
59
+	        val = READ(p);             \
60
+	        ARTY_CASE;                 \
61
+                goto other;                \
62
+        }
63
+
64
+
65
+#define remo_CASE      \
66
+     p += 4;           \
67
+     val = READ(p);    \
68
+     TE_P_CASE;        \
69
+     goto other;
70
+
71
+
72
+#endif /* CASE_REMO_H */