parser/case_cont.h
67386619
 /*
  * Contact, Content-Type, Content-Length, Content-Disposition, Content-Encoding
6a2b0dec
  * Header Field Name Parsing Macros
7dd0b342
  *
c32feee5
  * Copyright (C) 2001-2003 FhG Fokus
7dd0b342
  *
249269d2
  * This file is part of Kamailio, a free SIP server.
7dd0b342
  *
249269d2
  * Kamailio is free software; you can redistribute it and/or modify
7dd0b342
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or
  * (at your option) any later version
  *
249269d2
  * Kamailio is distributed in the hope that it will be useful,
7dd0b342
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  * GNU General Public License for more details.
  *
67386619
  * You should have received a copy of the GNU General Public License
  * along with this program; if not, write to the Free Software
9e1ff448
  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
1540fad1
  *
b474e895
  */
 
8c4ed5f0
 /*! \file 
  * \brief Parser :: Contact, Content-Type, Content-Length, Content-Disposition, Content-Encoding
  * Header Field Name Parsing Macros
  *
  * \ingroup parser
  */
 
 
7dd0b342
 
b474e895
 #ifndef CASE_CONT_H
 #define CASE_CONT_H
 
1540fad1
 #include "../comp_defs.h"
b474e895
 
 #define TH_CASE                                        \
32822438
         switch(LOWER_DWORD(val)) {                     \
b474e895
         case _th12_:                                   \
5c28a534
                 hdr->type = HDR_CONTENTLENGTH_T;       \
b474e895
                 hdr->name.len = 14;                    \
                 return (p + 4);                        \
         }                                              \
                                                        \
32822438
         if (LOWER_BYTE(*p) == 't') {                   \
b474e895
                 p++;                                   \
32822438
                 if (LOWER_BYTE(*p) == 'h') {           \
5c28a534
                         hdr->type = HDR_CONTENTLENGTH_T;\
b474e895
                         p++;                           \
                         goto dc_end;                   \
                 }                                      \
         }
 
 
2f43c732
 #define ion_CASE                                    \
         switch(LOWER_DWORD(val)) {                  \
         case _ion1_:                                \
5c28a534
 	        hdr->type = HDR_CONTENTDISPOSITION_T; \
2f43c732
 	        hdr->name.len = 19;                 \
 	        return (p + 4);                     \
                                                     \
         case _ion2_:                                \
5c28a534
                 hdr->type = HDR_CONTENTDISPOSITION_T; \
2f43c732
                 p += 4;                             \
 	        goto dc_end;                        \
         }
 
 
 #define DISPOSITION_CASE           \
         switch(LOWER_DWORD(val)) { \
         case _osit_:               \
 		p += 4;            \
 		val = READ(p);     \
 		ion_CASE;          \
 		goto other;        \
 	}
 
 
67386619
 #define ENCODING_CASE              \
 	switch(LOWER_DWORD(val)) { \
 	case _ding_:               \
 		p += 4;            \
 		hdr->type = HDR_CONTENTENCODING_T; \
 		goto dc_end;       \
 	}
 
2f43c732
 #define CONTENT_CASE                         \
         switch(LOWER_DWORD(val)) {           \
32822438
         case _leng_:                         \
b474e895
                 p += 4;                      \
                 val = READ(p);               \
                 TH_CASE;                     \
                 goto other;                  \
                                              \
32822438
         case _type_:                         \
5c28a534
                 hdr->type = HDR_CONTENTTYPE_T; \
b474e895
                 p += 4;                      \
                 goto dc_end;                 \
2f43c732
                                              \
         case _disp_:                         \
                 p += 4;                      \
 		val = READ(p);               \
 		DISPOSITION_CASE;            \
                 goto other;                  \
67386619
         case _enco_:                         \
                 p += 4;                      \
 		val = READ(p);               \
 		ENCODING_CASE;               \
                 goto other;                  \
b474e895
         }
 
 
 #define ACT_ENT_CASE                     \
32822438
         switch(LOWER_DWORD(val)) {       \
b474e895
         case _act1_:                     \
5c28a534
 	        hdr->type = HDR_CONTACT_T; \
b474e895
 	        hdr->name.len = 7;       \
 	        return (p + 4);          \
 	                                 \
         case _act2_:                     \
5c28a534
 	        hdr->type = HDR_CONTACT_T; \
b474e895
 	        p += 4;                  \
 	        goto dc_end;             \
                                          \
         case _ent__:                     \
                 p += 4;                  \
                 val = READ(p);           \
2f43c732
                 CONTENT_CASE;            \
b474e895
                 goto other;              \
67386619
         }
b474e895
 
32822438
 #define cont_CASE      \
b474e895
      p += 4;           \
      val = READ(p);    \
      ACT_ENT_CASE;     \
      goto other;
 
 
a054d7d5
 #endif /* CASE_CONT_H */