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