keys.h 7.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219
  1. /*
  2. * Fast 32-bit Header Field Name Parser -- keys
  3. *
  4. * Copyright (C) 2001-2003 FhG Fokus
  5. *
  6. * This file is part of ser, a free SIP server.
  7. *
  8. * ser 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. * ser 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. * History:
  23. * --------
  24. * 2003-05-01 _acce_ macro added (janakj)
  25. * 2003-05-01 Macros for Accept-Disposition added (janakj)
  26. * 2003-11-02 Macros for Diversion added (jh)
  27. * 2007-01-26 Macros for Identity, Identity-info, Date added (gergo)
  28. */
  29. /** Parser :: Fast 32-bit Header Field Name Parser -- keys .
  30. * @file
  31. * @ingroup parser
  32. */
  33. #ifndef KEYS_H
  34. #define KEYS_H
  35. /*! \name Parser definitions
  36. \verbatim
  37. * a b c d e f g h i j k l m n o p q r s t u v w x y z : ' ' -
  38. * 61 62 63 64 65 66 67 68 69 6a 6b 6c 6d 6e 6f 70 71 72 73 74 75 76 77 78 79 7a 3a 20 2d
  39. \endverbatim
  40. *
  41. * A quick way to generate the hex string is:
  42. * perl -e '$_=lc shift; print "0x".unpack("H*",reverse)."\n";' 4_char_str
  43. * or to generate the define list:
  44. perl -e '$s=lc shift; $s.=" "x(4-(length $s)%4);
  45. print map("#define _". reverse ."_ 0x". (unpack "H*")."\n",
  46. reverse unpack("(a[4])*", reverse $s));' string
  47. * Note that some editing is still needed (replace spaces and account for ':').
  48. * Test manually/visually if dword is intended string using:
  49. * awk '/^#define/ {printf("%s \"%c%c%c%c\" ... %s \n", $3,strtonum("0x" substr($3,9,2)),strtonum("0x" substr($3,7,2)),strtonum("0x" substr($3,5,2)),strtonum("0x" substr($3,3,2)),$5)}' keys.h
  50. *
  51. */
  52. /*!{ */
  53. #define _acce_ 0x65636361 /* "acce" */
  54. #define _allo_ 0x6f6c6c61 /* "allo" */
  55. #define _auth_ 0x68747561 /* "auth" */
  56. #define _oriz_ 0x7a69726f /* "oriz" */
  57. #define _atio_ 0x6f697461 /* "atio" */
  58. #define _call_ 0x6c6c6163 /* "call" */
  59. #define __id2_ 0x2064692d /* "-id " */
  60. #define __id1_ 0x3a64692d /* "-id:" */
  61. #define _cont_ 0x746e6f63 /* "cont" */
  62. #define _act2_ 0x20746361 /* "act " */
  63. #define _act1_ 0x3a746361 /* "act:" */
  64. #define _ent__ 0x2d746e65 /* "ent-" */
  65. #define _leng_ 0x676e656c /* "leng" */
  66. #define _th12_ 0x203a6874 /* "th: " */
  67. #define _type_ 0x65707974 /* "type" */
  68. #define _cseq_ 0x71657363 /* "cseq" */
  69. #define _expi_ 0x69707865 /* "expi" */
  70. #define _res2_ 0x20736572 /* "res " */
  71. #define _res1_ 0x3a736572 /* "res:" */
  72. #define _from_ 0x6d6f7266 /* "from" */
  73. #define _max__ 0x2d78616d /* "max-" */
  74. #define _forw_ 0x77726f66 /* "forw" */
  75. #define _ards_ 0x73647261 /* "ards" */
  76. #define _prox_ 0x786f7270 /* "prox" */
  77. #define _y_au_ 0x75612d79 /* "y-au" */
  78. #define _thor_ 0x726f6874 /* "thor" */
  79. #define _izat_ 0x74617a69 /* "izat" */
  80. #define _ion2_ 0x206e6f69 /* "ion " */
  81. #define _ion1_ 0x3a6e6f69 /* "ion:" */
  82. #define _then_ 0x6e656874 /* "then" */
  83. #define _tica_ 0x61636974 /* "tica" */
  84. #define _te1_ 0x003a6574 /* "te:" */
  85. #define _te2_ 0x00206574 /* "te " */
  86. #define _y_re_ 0x65722d79 /* "y-re" */
  87. #define _quir_ 0x72697571 /* "quir" */
  88. #define _reco_ 0x6f636572 /* "reco" */
  89. #define _rd_r_ 0x722d6472 /* "rd-r" */
  90. #define _oute_ 0x6574756f /* "oute" */
  91. #define _requ_ 0x75716572 /* "requ" */
  92. #define _ire2_ 0x20657269 /* "ire " */
  93. #define _ire1_ 0x3a657269 /* "ire:" */
  94. #define _rout_ 0x74756f72 /* "rout" */
  95. #define _supp_ 0x70707573 /* "supp" */
  96. #define _orte_ 0x6574726f /* "orte" */
  97. #define _to12_ 0x203a6f74 /* "to: " */
  98. #define _unsu_ 0x75736e75 /* "unsu" */
  99. #define _ppor_ 0x726f7070 /* "ppor" */
  100. #define _ted2_ 0x20646574 /* "ted " */
  101. #define _ted1_ 0x3a646574 /* "ted:" */
  102. #define _via2_ 0x20616976 /* "via " */
  103. #define _via1_ 0x3a616976 /* "via:" */
  104. #define _www__ 0x2d777777 /* "www-" */
  105. #define _enti_ 0x69746e65 /* "enti" */
  106. #define _cate_ 0x65746163 /* "cate" */
  107. #define _even_ 0x6e657665 /* "even" */
  108. #define _sip_ 0x2d706973 /* "sip-" */
  109. #define _ifm_ 0x6d2d6669 /* "if-m" */
  110. #define _atch_ 0x68637461 /* "atch" */
  111. #define _date_ 0x65746164 /* "date" */
  112. #define _iden_ 0x6e656469 /* "iden" */
  113. #define _tity_ 0x79746974 /* "tity" */
  114. #define _info_ 0x6f666e69 /* "info" */
  115. #define _path_ 0x68746170 /* "path" */
  116. #define _100r_ 0x72303031 /* "100r" */
  117. #define _time_ 0x656d6974 /* "time" */
  118. #define _pt_l_ 0x6c2d7470 /* "pt-l" */
  119. #define _angu_ 0x75676e61 /* "angu" */
  120. #define _age2_ 0x20656761 /* "age " */
  121. #define _age1_ 0x3a656761 /* "age:" */
  122. #define _orga_ 0x6167726f /* "orga" */
  123. #define _niza_ 0x617a696e /* "niza" */
  124. #define _tion_ 0x6e6f6974 /* "tion" */
  125. #define _prio_ 0x6f697270 /* "prio" */
  126. #define _rity_ 0x79746972 /* "rity" */
  127. #define _subj_ 0x6a627573 /* "subj" */
  128. #define _subs_ 0x73627573 /* "subs" */
  129. #define _crip_ 0x70697263 /* "crip" */
  130. #define __sta_ 0x6174732d /* "-sta" */
  131. #define _ect2_ 0x20746365 /* "ect " */
  132. #define _ect1_ 0x3a746365 /* "ect:" */
  133. #define _user_ 0x72657375 /* "user" */
  134. #define __age_ 0x6567612d /* "-age" */
  135. #define _disp_ 0x70736964 /* "disp" */
  136. #define _osit_ 0x7469736f /* "osit" */
  137. #define _ion2_ 0x206e6f69 /* "ion " */
  138. #define _ion1_ 0x3a6e6f69 /* "ion:" */
  139. #define _pt_d_ 0x642d7470 /* "pt-d" */
  140. #define _ispo_ 0x6f707369 /* "ispo" */
  141. #define _siti_ 0x69746973 /* "siti" */
  142. #define _serv_ 0x76726573 /* "serv" */
  143. #define _dive_ 0x65766964 /* "dive" */
  144. #define _rsio_ 0x6f697372 /* "rsio" */
  145. #define _remo_ 0x6f6d6572 /* "remo" */
  146. #define _te_p_ 0x702d6574 /* "te-p" */
  147. #define _arty_ 0x79747261 /* "arty" */
  148. #define __id2_ 0x2064692d /* "-id " */
  149. #define __id1_ 0x3a64692d /* "-id:" */
  150. #define _refe_ 0x65666572 /* "refe" */
  151. #define _r_to_ 0x6f742d72 /* "r-to" */
  152. #define _pt_c_ 0x632d7470 /* "pt-c" */
  153. #define _onta_ 0x61746e6f /* "onta" */
  154. #define _sess_ 0x73736573 /* "sess" */
  155. #define _ion__ 0x2d6e6f69 /* "ion-" */
  156. #define _res2_ 0x20736572 /* "res " */
  157. #define _res1_ 0x3a736572 /* "res:" */
  158. #define _w_ev_ 0x76652d77 /* "w-ev" */
  159. #define _ents_ 0x73746e65 /* "ents" */
  160. #define _enco_ 0x6f636e65 /* "enco" */
  161. #define _ding_ 0x676e6964 /* "ding" */
  162. #define _rred_ 0x64657272 /* "rred" */
  163. #define __by2_ 0x2079622d /* "-by " */
  164. #define __by1_ 0x3a79622d /* "-by:" */
  165. #define _reje_ 0x656a6572 /* "reje" */
  166. #define _ct_c_ 0x632d7463 /* "ct-c" */
  167. #define _est__ 0x2d747365 /* "est-" */
  168. #define _min__ 0x2d6e696d /* "min-" */
  169. #define _retr_ 0x72746572 /* "retr" */
  170. #define _y_af_ 0x66612d79 /* "y-af" */
  171. #define _ter1_ 0x3a726574 /* "ter:" */
  172. #define _ter2_ 0x20726574 /* "ter " */
  173. #define _priv_ 0x76697270 /* "priv" */
  174. #define _acy2_ 0x20796361 /* "acy " */
  175. #define _acy1_ 0x3a796361 /* "acy:" */
  176. #define _reas_ 0x73616572 /* "reas" */
  177. #define _on1_ 0x203a6e6f /* "on: " */
  178. #define _on2_ 0x3a206e6f /* "on :" */
  179. #define _on3_ 0x20206e6f /* "on " */
  180. #define _p_as_ 0x73612d70 /* "p-as" */
  181. #define _sert_ 0x74726573 /* "sert" */
  182. #define _ed_i_ 0x692d6465 /* "ed-i" */
  183. #define _dent_ 0x746e6564 /* "dent" */
  184. #define _ity1_ 0x3a797469 /* "ity:" */
  185. #define _ity2_ 0x20797469 /* "ity " */
  186. #define _p_pr_ 0x72702d70 /* "p-pr" */
  187. #define _efer_ 0x72656665 /* "efer" */
  188. #define _red__ 0x2d646572 /* "red-" */
  189. /* _iden_ is already defined */
  190. /* _tity_ is already defined */
  191. /*!} */
  192. #endif /* KEYS_H */