iax.h 3.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. /*
  2. * Asterisk -- A telephony toolkit for Linux.
  3. *
  4. * Implementation of Inter-Asterisk eXchange
  5. *
  6. * Copyright (C) 1999, Mark Spencer
  7. *
  8. * Mark Spencer <markster@linux-support.net>
  9. *
  10. * This program is free software, distributed under the terms of
  11. * the GNU General Public License
  12. */
  13. #ifndef _ASTERISK_IAX_H
  14. #define _ASTERISK_IAX_H
  15. /* Max version of IAX protocol we support */
  16. #define AST_IAX_PROTO_VERSION 1
  17. #define AST_IAX_MAX_CALLS 32768
  18. #define AST_FLAG_FULL 0x8000
  19. #define AST_FLAG_SC_LOG 0x80
  20. #define AST_MAX_SHIFT 0x1F
  21. /* Subclass for AST_FRAME_IAX */
  22. #define AST_IAX_COMMAND_NEW 1
  23. #define AST_IAX_COMMAND_PING 2
  24. #define AST_IAX_COMMAND_PONG 3
  25. #define AST_IAX_COMMAND_ACK 4
  26. #define AST_IAX_COMMAND_HANGUP 5
  27. #define AST_IAX_COMMAND_REJECT 6
  28. #define AST_IAX_COMMAND_ACCEPT 7
  29. #define AST_IAX_COMMAND_AUTHREQ 8
  30. #define AST_IAX_COMMAND_AUTHREP 9
  31. #define AST_IAX_COMMAND_INVAL 10
  32. #define AST_IAX_COMMAND_LAGRQ 11
  33. #define AST_IAX_COMMAND_LAGRP 12
  34. #define AST_IAX_COMMAND_REGREQ 13 /* Registration request */
  35. #define AST_IAX_COMMAND_REGAUTH 14 /* Registration authentication required */
  36. #define AST_IAX_COMMAND_REGACK 15 /* Registration accepted */
  37. #define AST_IAX_COMMAND_REGREJ 16 /* Registration rejected */
  38. #define AST_IAX_COMMAND_REGREL 17 /* Force release of registration */
  39. #define AST_IAX_COMMAND_VNAK 18 /* If we receive voice before valid first voice frame, send this */
  40. #define AST_IAX_COMMAND_DPREQ 19 /* Request status of a dialplan entry */
  41. #define AST_IAX_COMMAND_DPREP 20 /* Request status of a dialplan entry */
  42. #define AST_IAX_COMMAND_DIAL 21 /* Request a dial on channel brought up TBD */
  43. #define AST_IAX_COMMAND_TXREQ 22 /* Transfer Request */
  44. #define AST_IAX_COMMAND_TXCNT 23 /* Transfer Connect */
  45. #define AST_IAX_COMMAND_TXACC 24 /* Transfer Accepted */
  46. #define AST_IAX_COMMAND_TXREADY 25 /* Transfer ready */
  47. #define AST_IAX_COMMAND_TXREL 26 /* Transfer release */
  48. #define AST_IAX_COMMAND_TXREJ 27 /* Transfer reject */
  49. #define AST_IAX_COMMAND_QUELCH 28 /* Stop audio/video transmission */
  50. #define AST_IAX_COMMAND_UNQUELCH 29 /* Resume audio/video transmission */
  51. #define AST_IAX_COMMAND_POKE 30 /* Like ping, but does not require an open connection */
  52. #define AST_DEFAULT_REG_EXPIRE 60 /* By default require re-registration once per minute */
  53. #define AST_DEFAULT_IAX_PORTNO 5036
  54. /* Full frames are always delivered reliably */
  55. struct ast_iax_full_hdr {
  56. short callno; /* Source call number -- high bit must be 1 */
  57. short dcallno; /* Destination call number */
  58. unsigned int ts; /* 32-bit timestamp in milliseconds */
  59. unsigned short seqno; /* Packet number */
  60. char type; /* Frame type */
  61. unsigned char csub; /* Compressed subclass */
  62. char data[0];
  63. };
  64. /* Mini header is used only for voice frames -- delivered unreliably */
  65. struct ast_iax_mini_hdr {
  66. short callno; /* Source call number -- high bit must be 0 */
  67. unsigned short ts; /* 16-bit Timestamp (high 16 bits from last ast_iax_full_hdr) */
  68. /* Frametype implicitly VOICE_FRAME */
  69. /* subclass implicit from last ast_iax_full_hdr */
  70. char data[0];
  71. };
  72. #endif