1 /*
2  * Accept, Accept-Language, Accept-Contact, Accept-Disposition 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 /*! \file
24  * \brief Parser :: Accept, Accept-Language, Accept-Contact, Accept-Disposition Header Field Name Parsing Macros
25  *
26  * \ingroup parser
27  */
28 
29 #ifndef CASE_ACCE_H
30 #define CASE_ACCE_H
31 
32 
33 #define age_CASE                                \
34         switch(LOWER_DWORD(val)) {              \
35         case _age1_:                            \
36 	        hdr->type = HDR_ACCEPTLANGUAGE_T; \
37 	        hdr->name.len = 15;             \
38 	        return (p + 4);                 \
39                                                 \
40         case _age2_:                            \
41                 hdr->type = HDR_ACCEPTLANGUAGE_T; \
42                 p += 4;                         \
43 	        goto dc_end;                    \
44         }
45 
46 
47 #define angu_CASE                  \
48         switch(LOWER_DWORD(val)) { \
49         case _angu_:               \
50 		p += 4;            \
51 		val = READ(p);     \
52 		age_CASE;          \
53 		goto other;        \
54 	}
55 
56 
57 #define accept_contact_ct_CASE                             \
58         if (LOWER_BYTE(*p) == 'c') {                       \
59                 p++;                                       \
60                 if (LOWER_BYTE(*p) == 't') {               \
61                         hdr->type = HDR_ACCEPTCONTACT_T;   \
62                         p++;                               \
63                         goto dc_end;                       \
64                 }                                          \
65         }
66 
67 #define accept_c_onta_CASE         \
68         switch(LOWER_DWORD(val)) { \
69         case _onta_:               \
70                 p += 4;            \
71                 val = READ(p);     \
72                 accept_contact_ct_CASE;  \
73                 goto other;        \
74         }
75 
76 
77 #define ptldc_CASE                 \
78         switch(LOWER_DWORD(val)) { \
79         case _pt_l_:               \
80 		p += 4;            \
81 		val = READ(p);     \
82 		angu_CASE;         \
83 		goto other;        \
84                                    \
85         case _pt_c_:               \
86                 p += 4;            \
87                 val = READ(p);     \
88                 accept_c_onta_CASE;\
89                 goto other;        \
90 	}
91 
92 
93 #define acce_CASE                           \
94     p += 4;                                 \
95     val = READ(p);                          \
96     ptldc_CASE;                             \
97                                             \
98     if (LOWER_BYTE(*p) == 'p') {            \
99             p++;                            \
100             if (LOWER_BYTE(*p) == 't') {    \
101                     hdr->type = HDR_ACCEPT_T; \
102                     p++;                    \
103                     goto dc_end;            \
104             }                               \
105     }                                       \
106     goto other;
107 
108 
109 #endif /* CASE_ACCE_H */
110