OPAL  Version 3.18.8
ies.h
Go to the documentation of this file.
1 /*
2  *
3  * Inter Asterisk Exchange 2
4  *
5  * The classes used to hold Information Elements.
6  *
7  * Open Phone Abstraction Library (OPAL)
8  *
9  * Copyright (c) 2005 Indranet Technologies Ltd.
10  *
11  * The contents of this file are subject to the Mozilla Public License
12  * Version 1.0 (the "License"); you may not use this file except in
13  * compliance with the License. You may obtain a copy of the License at
14  * http://www.mozilla.org/MPL/
15  *
16  * Software distributed under the License is distributed on an "AS IS"
17  * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
18  * the License for the specific language governing rights and limitations
19  * under the License.
20  *
21  * The Original Code is Open Phone Abstraction Library.
22  *
23  * The Initial Developer of the Original Code is Indranet Technologies Ltd.
24  *
25  * The author of this code is Derek J Smithies
26  */
27 
28 #ifndef OPAL_IAX2_IES_H
29 #define OPAL_IAX2_IES_H
30 
31 #ifndef _PTLIB_H
32 #include <ptlib.h>
33 #endif
34 
35 #include <opal_config.h>
36 
37 #if OPAL_IAX2
38 
39 #include <ptlib/sockets.h>
40 #include <iax2/iedata.h>
41 
42 #ifdef P_USE_PRAGMA
43 #pragma interface
44 #endif
45 
46 
47 class IAX2Ie;
48 class IAX2Encryption;
49 
51 class IAX2Ie : public PObject
52 {
53  PCLASSINFO(IAX2Ie, PObject);
54  public:
65  ie_format = 9,
66  ie_language = 10,
67  ie_version = 11,
68  ie_adsicpe = 12,
69  ie_dnid = 13,
71  ie_challenge = 15,
72  ie_md5Result = 16,
73  ie_rsaResult = 17,
75  ie_refresh = 19,
76  ie_dpStatus = 20,
77  ie_callNo = 21,
78  ie_cause = 22,
80  ie_msgCount = 24,
84  ie_rdnis = 28,
87  ie_dateTime = 31,
93  ie_provVer = 37,
98  ie_causeCode = 42,
100  ie_encKey = 44,
103  ie_recLoss = 47,
105  ie_recDelay = 49,
107  ie_recOoo = 51,
108  ie_variable = 52,
109  ie_ospToken = 53,
112  ie_format2 = 56,
114  };
115 
118 
120  IAX2Ie();
121 
123  virtual ~IAX2Ie() { };
125 
129  static IAX2Ie *BuildInformationElement(BYTE _typeCode, BYTE length, BYTE *srcData);
130 
132  virtual PBoolean IsValid() { return validData; }
133 
135  virtual BYTE GetLengthOfData() const { return 0; }
136 
138  int GetBinarySize() const { return 2 + GetLengthOfData(); }
139 
141  virtual void PrintOn(ostream & str) const;
142 
144  virtual BYTE GetKeyValue() const { return 255; }
145 
147  void SetData(int &/*newData*/) { PAssertAlways("Ie class cannnot set data value"); };
148 
150  int ReadData() { PAssertAlways("Ie class cannot read the internal data value"); return 0; };
151 
154  void WriteBinary(void *data, PINDEX & writeIndex);
155 
158  virtual void StoreDataIn(IAX2IeData &/*res*/) { PAssertAlways(PUnimplementedFunction); }
160 
161  protected:
163  virtual void WriteBinary(BYTE * /*data*/) { PAssertAlways(PUnimplementedFunction); }
164 
167  PBoolean validData;
168 };
169 
171 
173 {
174  PCLASSINFO(IAX2IeInvalidElement, IAX2Ie);
175  public:
177 
180  virtual BYTE GetlengthOfData() { return 0; }
181 
183  virtual void PrintOn(ostream & str) const
184  { str << "Invlalid Information Element" << endl; }
185  protected:
189  virtual void WriteBinary(BYTE * /*data*/) { }
190 };
192 
193 class IAX2IeNone : public IAX2Ie
194 {
195  PCLASSINFO(IAX2IeNone, IAX2Ie);
198 
202  IAX2IeNone(BYTE length, BYTE *srcData);
203 
205  IAX2IeNone() : IAX2Ie() {}
207 
211  virtual BYTE GetLengthOfData() const { return 0; }
212 
214  BYTE GetValue() { return 0; }
215 
217  virtual void PrintOn(ostream & str) const;
218 
220  void SetData(void * /*newData*/)
221  { PAssertAlways("IeNone cannot set data"); }
222 
224  int ReadData() { PAssertAlways("IeNone cannot read the internal data value"); return 0; }
225 
227  protected:
230  virtual void WriteBinary(BYTE * /*data*/) { }
231 };
232 
234 
235 class IAX2IeByte : public IAX2Ie
236 {
237  PCLASSINFO(IAX2IeByte, IAX2Ie);
240 
244  IAX2IeByte(BYTE length, BYTE *srcData);
245 
247  IAX2IeByte(BYTE newValue) : IAX2Ie() { SetData(newValue); }
248 
250  IAX2IeByte() : IAX2Ie() { }
252 
256  virtual BYTE GetLengthOfData() const { return sizeof(dataValue); }
257 
259  virtual void PrintOn(ostream & str) const;
260 
262  void SetData(BYTE newData) { dataValue = newData; validData = true; }
263 
265  BYTE ReadData() { return dataValue; }
266 
268  protected:
271  virtual void WriteBinary(BYTE *data) { data[0] = dataValue; }
272 
274  BYTE dataValue;
275 };
276 
278 
279 class IAX2IeChar : public IAX2Ie
280 {
281  PCLASSINFO(IAX2IeChar, IAX2Ie);
284 
288  IAX2IeChar(BYTE length, BYTE *srcData);
289 
291  IAX2IeChar(char newValue) : IAX2Ie() { SetData(newValue); }
292 
294  IAX2IeChar() : IAX2Ie() { }
296 
300  virtual BYTE GetLengthOfData() const { return sizeof(dataValue); }
301 
303  virtual void PrintOn(ostream & str) const;
304 
306  void SetData(char newData) { dataValue = newData; validData = true; }
307 
309  char ReadData() { return dataValue; }
310 
312  protected:
315  virtual void WriteBinary(BYTE *data) { data[0] = dataValue; }
316 
318  char dataValue;
319 };
320 
322 
323 class IAX2IeShort : public IAX2Ie
324 {
325  PCLASSINFO(IAX2IeShort, IAX2Ie);
328 
332  IAX2IeShort(BYTE length, BYTE *srcData);
333 
335  IAX2IeShort(short newValue) : IAX2Ie() { SetData(newValue); }
336 
338  IAX2IeShort() : IAX2Ie() { }
340 
344  virtual BYTE GetLengthOfData() const { return sizeof(dataValue); }
345 
347  virtual void PrintOn(ostream & str) const;
348 
350  void SetData(short newData) { dataValue = newData; validData = true; }
351 
353  short ReadData() { return dataValue; }
355  protected:
358  virtual void WriteBinary(BYTE *data);
359 
361  short dataValue;
362 };
364 
365 class IAX2IeInt : public IAX2Ie
366 {
367  PCLASSINFO(IAX2IeInt, IAX2Ie);
370 
374  IAX2IeInt(BYTE length, BYTE *srcData);
375 
377  IAX2IeInt(int newValue) : IAX2Ie() { SetData(newValue); }
378 
380  IAX2IeInt() : IAX2Ie() { }
382 
386  virtual BYTE GetLengthOfData() const { return sizeof(dataValue); }
387 
389  virtual void PrintOn(ostream & str) const;
390 
392  void SetData(int newData) { dataValue = newData; validData = true; }
393 
395  int ReadData() { return dataValue; }
396 
398  protected:
401  virtual void WriteBinary(BYTE *data);
402 
405 };
407 
408 class IAX2IeUShort : public IAX2Ie
409 {
410  PCLASSINFO(IAX2IeUShort, IAX2Ie);
413 
417  IAX2IeUShort(BYTE length, BYTE *srcData);
418 
420  IAX2IeUShort(unsigned short newValue) : IAX2Ie() { SetData(newValue); }
421 
423  IAX2IeUShort() : IAX2Ie() {}
425 
429  virtual BYTE GetLengthOfData() const { return sizeof(dataValue); }
430 
432  virtual void PrintOn(ostream & str) const;
433 
435  void SetData(unsigned short newData) { dataValue = newData; validData = true; }
436 
438  unsigned short ReadData() { return dataValue; }
440  protected:
443  virtual void WriteBinary(BYTE *data);
444 
446  unsigned short dataValue;
447 };
449 
450 class IAX2IeUInt : public IAX2Ie
451 {
452  PCLASSINFO(IAX2IeUInt, IAX2Ie);
455 
459  IAX2IeUInt(BYTE length, BYTE *srcData);
460 
462  IAX2IeUInt() : IAX2Ie() {}
463 
465  IAX2IeUInt(unsigned int newValue) { SetData(newValue); }
467 
471  virtual BYTE GetLengthOfData() const { return sizeof(dataValue); }
472 
474  virtual void PrintOn(ostream & str) const;
475 
477  void SetData(unsigned int &newData) { dataValue = newData; validData = true; }
478 
480  unsigned int ReadData() { return dataValue; }
482 
483  protected:
486  virtual void WriteBinary(BYTE *data);
487 
489  unsigned int dataValue;
490 };
491 
493 
494 class IAX2IeString : public IAX2Ie
495 {
496  PCLASSINFO(IAX2IeString, IAX2Ie);
499 
500  public:
504  IAX2IeString(BYTE length, BYTE *srcData);
505 
507  IAX2IeString(const PString & newValue) : IAX2Ie() { SetData(newValue); }
508 
510  IAX2IeString(const char * newValue) : IAX2Ie() { SetData(newValue); }
511 
515 
519  virtual BYTE GetLengthOfData() const;
520 
522  void PrintOn(ostream & str) const;
523 
525  void SetData(const PString & newData);
526 
528  void SetData(const char * newData);
529 
531  PString ReadData() { return dataValue; }
533 
534  protected:
537  virtual void WriteBinary(BYTE *data);
538 
540  PString dataValue;
541 };
542 
544 
546 class IAX2IeBinary : public IAX2Ie
547 {
548  PCLASSINFO(IAX2IeBinary, IAX2Ie);
551 
552  public:
557  IAX2IeBinary(BYTE length, BYTE *srcData);
558 
560  IAX2IeBinary(PBYTEArray newValue) : IAX2Ie() { SetData(newValue); }
561 
565 
569  virtual BYTE GetLengthOfData() const { return (BYTE)dataValue.GetSize(); }
570 
572  virtual void PrintOn(ostream & str) const;
573 
575  void SetData(const PBYTEArray & newData);
576 
578  void GetData(PBYTEArray & answer);
579 
582  void CopyData(IAX2IeBinary *src);
584 
585  protected:
588  virtual void WriteBinary(BYTE *data);
589 
591  PBYTEArray dataValue;
592 };
593 
594 
596 
597 class IAX2IeDateAndTime : public IAX2Ie
598 {
599  PCLASSINFO(IAX2IeDateAndTime, IAX2Ie);
602 
603  public:
607  IAX2IeDateAndTime(BYTE length, BYTE *srcData);
608 
610  IAX2IeDateAndTime(const PTime & newValue) : IAX2Ie() { SetData(newValue); }
611 
615 
619  virtual void PrintOn(ostream & str) const;
620 
622  virtual BYTE GetLengthOfData() const { return 4; }
623 
625  void SetData(const PTime & newData)
626  { dataValue = newData; validData = true; }
627 
629  PTime ReadData() { return dataValue; }
631  protected:
634  virtual void WriteBinary(BYTE *data);
635 
637  PTime dataValue;
638 };
640 
641 class IAX2IeBlockOfData : public IAX2Ie
642 {
643  PCLASSINFO(IAX2IeBlockOfData, IAX2Ie);
646 
647  public:
651  IAX2IeBlockOfData(BYTE length, BYTE *srcData);
652 
654  IAX2IeBlockOfData(const PBYTEArray & newData) : IAX2Ie() { SetData(newData); }
655 
659 
663  virtual void PrintOn(ostream & str) const;
664 
666  virtual BYTE GetLengthOfData() const { return (BYTE)dataValue.GetSize(); }
667 
669  void SetData(const PBYTEArray & newData)
670  { dataValue = newData; validData = true; }
671 
673  PBYTEArray ReadData() { return dataValue; }
674 
676  protected:
679  virtual void WriteBinary(BYTE *data);
680 
682  PBYTEArray dataValue;
683 };
685 
686 class IAX2IeSockaddrIn : public IAX2Ie
687 {
688  PCLASSINFO(IAX2IeSockaddrIn, IAX2Ie);
691 
692  public:
696  IAX2IeSockaddrIn(BYTE length, BYTE *srcData);
697 
699  IAX2IeSockaddrIn(const PIPSocket::Address & addr, PINDEX port) : IAX2Ie()
700  { SetData(addr, port); }
701 
704 
708 
712  virtual void PrintOn(ostream & str) const;
713 
715  virtual BYTE GetLengthOfData() const { return sizeof(struct sockaddr_in); }
716 
718  void SetData(const PIPSocket::Address & newAddr, PINDEX newPort)
719  { dataValue = newAddr; portNumber = newPort; validData = true; }
720 
722  PIPSocket::Address ReadData() { return dataValue; }
723 
725  protected:
728  virtual void WriteBinary(BYTE *data);
729 
731  PIPSocket::Address dataValue;
732 
734  PINDEX portNumber;
735 };
736 
738 
740 {
741  PCLASSINFO(IAX2IeCalledNumber, IAX2IeString);
742  public:
746  IAX2IeCalledNumber(BYTE length, BYTE *srcData)
747  : IAX2IeString(length, srcData) {};
748 
750  IAX2IeCalledNumber(const PString & newValue) { SetData(newValue); }
751 
753  virtual void PrintOn(ostream & str) const;
754 
756  virtual BYTE GetKeyValue() const { return ie_calledNumber; }
757 
761  virtual void StoreDataIn(IAX2IeData &res) { res.calledNumber = dataValue; }
762  protected:
763 };
765 
768 {
769  PCLASSINFO(IAX2IeCallingNumber, IAX2IeString);
770  public:
774  IAX2IeCallingNumber(BYTE length, BYTE *srcData)
775  : IAX2IeString(length, srcData) { };
776 
778  IAX2IeCallingNumber(const PString & newValue) { SetData(newValue); }
779 
781  virtual void PrintOn(ostream & str) const;
782 
784  virtual BYTE GetKeyValue() const { return ie_callingNumber; }
785 
789  virtual void StoreDataIn(IAX2IeData &res)
790  { res.callingNumber = dataValue; }
791  protected:
792 };
793 
795 
797 {
798  PCLASSINFO(IAX2IeCallingAni, IAX2IeString);
799  public:
803  IAX2IeCallingAni(BYTE length, BYTE *srcData)
804  : IAX2IeString(length, srcData) { };
805 
807  IAX2IeCallingAni(const PString & newValue) { SetData(newValue); }
808 
810  virtual void PrintOn(ostream & str) const;
811 
813  virtual BYTE GetKeyValue() const { return ie_callingAni; }
814 
818  virtual void StoreDataIn(IAX2IeData &res)
819  { res.callingAni = dataValue; }
820  protected:
821 };
822 
824 
826 {
827  PCLASSINFO(IAX2IeCallingName, IAX2IeString);
828  public:
832  IAX2IeCallingName(BYTE length, BYTE *srcData)
833  : IAX2IeString(length, srcData) { };
834 
836  IAX2IeCallingName(const PString & newValue) { SetData(newValue); }
837 
839  virtual void PrintOn(ostream & str) const;
840 
842  virtual BYTE GetKeyValue() const { return ie_callingName; }
843 
847  virtual void StoreDataIn(IAX2IeData &res)
848  { res.callingName = dataValue; }
849  protected:
850 };
851 
853 
855 {
856  PCLASSINFO(IAX2IeCalledContext, IAX2IeString);
857  public:
861  IAX2IeCalledContext(BYTE length, BYTE *srcData) : IAX2IeString(length, srcData) { };
862 
864  IAX2IeCalledContext(const PString & newValue) { SetData(newValue); }
865 
867  virtual void PrintOn(ostream & str) const;
868 
870  virtual BYTE GetKeyValue() const { return ie_calledContext; }
871 
875  virtual void StoreDataIn(IAX2IeData &res)
876  { res.calledContext = dataValue; }
877  protected:
878 };
879 
881 
883 {
884  PCLASSINFO(IAX2IeUserName, IAX2IeString);
885  public:
889  IAX2IeUserName(BYTE length, BYTE *srcData) : IAX2IeString(length, srcData) { };
890 
892  IAX2IeUserName(const PString & newValue) { SetData(newValue); }
893 
895  virtual void PrintOn(ostream & str) const;
896 
898  virtual BYTE GetKeyValue() const { return ie_userName; }
899 
903  virtual void StoreDataIn(IAX2IeData &res) { res.userName = dataValue; }
904  protected:
905 };
906 
908 
910 {
911  PCLASSINFO(IAX2IePassword, IAX2IeString);
912  public:
916  IAX2IePassword(BYTE length, BYTE *srcData) : IAX2IeString(length, srcData) { };
917 
919  IAX2IePassword(const PString & newValue) { SetData(newValue); }
920 
922  virtual void PrintOn(ostream & str) const;
923 
925  virtual BYTE GetKeyValue() const { return ie_password; }
926 
930  virtual void StoreDataIn(IAX2IeData &res) { res.password = dataValue; }
931  protected:
932 };
933 
935 
937 {
938  PCLASSINFO(IAX2IeCapability, IAX2IeUInt);
939  public:
943  IAX2IeCapability(BYTE length, BYTE *srcData) : IAX2IeUInt(length, srcData) { };
944 
946  IAX2IeCapability(unsigned int newValue) : IAX2IeUInt(newValue) { }
947 
949  virtual void PrintOn(ostream & str) const;
950 
952  virtual BYTE GetKeyValue() const { return ie_capability; }
953 
957  virtual void StoreDataIn(IAX2IeData &res) { res.capability = dataValue; }
958  protected:
959 };
960 
962 
963 class IAX2IeFormat : public IAX2IeUInt
964 {
965  PCLASSINFO(IAX2IeFormat, IAX2IeUInt);
966  public:
970  IAX2IeFormat(BYTE length, BYTE *srcData) : IAX2IeUInt(length, srcData) { };
971 
973  IAX2IeFormat(unsigned int newValue) : IAX2IeUInt(newValue) { }
974 
976  virtual void PrintOn(ostream & str) const;
977 
979  virtual BYTE GetKeyValue() const { return ie_format; }
980 
984  virtual void StoreDataIn(IAX2IeData &res) { res.format = dataValue; }
985  protected:
986 };
987 
989 
991 {
992  PCLASSINFO(IAX2IeLanguage, IAX2IeString);
993  public:
997  IAX2IeLanguage(BYTE length, BYTE *srcData) : IAX2IeString(length, srcData) { };
998 
1000  IAX2IeLanguage(const PString & newValue) { SetData(newValue); }
1001 
1003  virtual void PrintOn(ostream & str) const;
1004 
1006  virtual BYTE GetKeyValue() const { return ie_language; }
1007 
1011  virtual void StoreDataIn(IAX2IeData &res) { res.language = dataValue; }
1012  protected:
1013 };
1014 
1016 
1018 {
1019  PCLASSINFO(IAX2IeVersion, IAX2IeShort);
1020  public:
1024  IAX2IeVersion(BYTE length, BYTE *srcData) : IAX2IeShort(length, srcData) { };
1025 
1027  IAX2IeVersion() { dataValue = 2; validData = true; }
1028 
1030  virtual void PrintOn(ostream & str) const;
1031 
1033  virtual BYTE GetKeyValue() const { return ie_version; }
1034 
1038  virtual void StoreDataIn(IAX2IeData &res) { res.version = dataValue; }
1039  protected:
1040 };
1041 
1043 
1045 {
1046  PCLASSINFO(IAX2IeAdsicpe, IAX2IeShort);
1047  public:
1051  IAX2IeAdsicpe(BYTE length, BYTE *srcData) : IAX2IeShort(length, srcData) { };
1052 
1054  virtual void PrintOn(ostream & str) const;
1055 
1057  virtual BYTE GetKeyValue() const { return ie_adsicpe; }
1058 
1062  virtual void StoreDataIn(IAX2IeData &res) { res.adsicpe = dataValue; }
1063  protected:
1064 };
1065 
1067 
1068 class IAX2IeDnid : public IAX2IeString
1069 {
1070  PCLASSINFO(IAX2IeDnid, IAX2IeString);
1071  public:
1075  IAX2IeDnid(BYTE length, BYTE *srcData) : IAX2IeString(length, srcData) { };
1076 
1078  IAX2IeDnid(const PString & newValue) { SetData(newValue); }
1079 
1081  virtual void PrintOn(ostream & str) const;
1082 
1084  virtual BYTE GetKeyValue() const { return ie_dnid; }
1085 
1089  virtual void StoreDataIn(IAX2IeData &res) { res.dnid = dataValue; }
1090  protected:
1091 };
1092 
1094 
1096 {
1097  PCLASSINFO(IAX2IeAuthMethods, IAX2IeShort);
1098  public:
1102  IAX2IeAuthMethods(BYTE length, BYTE *srcData) : IAX2IeShort(length, srcData) { };
1103 
1105  IAX2IeAuthMethods(short newValue) { SetData(newValue); }
1106 
1108  virtual void PrintOn(ostream & str) const;
1109 
1111  virtual BYTE GetKeyValue() const { return ie_authMethods; }
1112 
1116  virtual void StoreDataIn(IAX2IeData &res) { res.authMethods = dataValue; }
1117 
1119  static PBoolean IsRsaAuthentication(short testValue) { return InternalIsRsa(testValue); }
1120 
1122  static PBoolean IsMd5Authentication(short testValue) { return InternalIsMd5(testValue); }
1123 
1125  static PBoolean IsPlainTextAuthentication(short testValue) { return InternalIsPlainText(testValue); }
1126 
1128  PBoolean IsRsaAuthentication() { if (IsValid()) return InternalIsRsa(dataValue); else return false; }
1129 
1131  PBoolean IsMd5Authentication() { if (IsValid()) return InternalIsMd5(dataValue); else return false; }
1132 
1134  PBoolean IsPlainTextAuthentication() { if (IsValid()) return InternalIsPlainText(dataValue); else return false; }
1135 
1136  protected:
1137 
1139  static PBoolean InternalIsRsa(short testValue) { return testValue & 0x04; }
1140 
1142  static PBoolean InternalIsMd5(short testValue) { return testValue & 0x02; }
1143 
1145  static PBoolean InternalIsPlainText(short testValue) { return testValue & 0x01; }
1146 };
1147 
1149 
1151 {
1152  PCLASSINFO(IAX2IeChallenge, IAX2IeString);
1153  public:
1157  IAX2IeChallenge(BYTE length, BYTE *srcData) : IAX2IeString(length, srcData) { };
1158 
1160  IAX2IeChallenge(const PString & newValue) { SetData(newValue); }
1161 
1163  virtual void PrintOn(ostream & str) const;
1164 
1166  virtual BYTE GetKeyValue() const { return ie_challenge; }
1167 
1171  virtual void StoreDataIn(IAX2IeData &res) { res.challenge = dataValue; }
1172  protected:
1173 };
1174 
1176 
1178 {
1179  PCLASSINFO(IAX2IeMd5Result, IAX2IeString);
1180  public:
1184  IAX2IeMd5Result(BYTE length, BYTE *srcData) : IAX2IeString(length, srcData) { };
1185 
1187  IAX2IeMd5Result(const PString & newValue) { SetData(newValue); }
1188 
1190  IAX2IeMd5Result(const PString & challenge, const PString & password);
1191 
1193  IAX2IeMd5Result(IAX2Encryption & encryption);
1194 
1196  void InitializeChallengePassword(const PString & newChallenge, const PString & newPassword);
1197 
1199  virtual void PrintOn(ostream & str) const;
1200 
1202  virtual BYTE GetKeyValue() const { return ie_md5Result; }
1203 
1207  virtual void StoreDataIn(IAX2IeData &res) { res.md5Result = dataValue; }
1208 
1211  PBYTEArray & GetDataBlock() { return dataBlock; }
1212 
1213  protected:
1214 
1216  PBYTEArray dataBlock;
1217 };
1218 
1220 
1222 {
1223  PCLASSINFO(IAX2IeRsaResult, IAX2IeString);
1224  public:
1228  IAX2IeRsaResult(BYTE length, BYTE *srcData) : IAX2IeString(length, srcData) { };
1229 
1231  IAX2IeRsaResult(const PString & newValue) { SetData(newValue); }
1232 
1234  virtual void PrintOn(ostream & str) const;
1235 
1237  virtual BYTE GetKeyValue() const { return ie_rsaResult; }
1238 
1242  virtual void StoreDataIn(IAX2IeData &res) { res.rsaResult = dataValue; }
1243  protected:
1244 };
1245 
1247 
1249 {
1250  PCLASSINFO(IAX2IeApparentAddr, IAX2IeSockaddrIn);
1251  public:
1255  IAX2IeApparentAddr(BYTE length, BYTE *srcData) : IAX2IeSockaddrIn(length, srcData) { };
1256 
1259 
1261  virtual void PrintOn(ostream & str) const;
1262 
1264  virtual BYTE GetKeyValue() const { return ie_apparentAddr; }
1265 
1269  virtual void StoreDataIn(IAX2IeData &res) { res.apparentAddr = dataValue; }
1270  protected:
1271 };
1272 
1274 
1276 {
1277  PCLASSINFO(IAX2IeRefresh, IAX2IeShort);
1278  public:
1282  IAX2IeRefresh(BYTE length, BYTE *srcData) : IAX2IeShort(length, srcData) { };
1283 
1285  IAX2IeRefresh(short refreshTime) : IAX2IeShort(refreshTime) { };
1286 
1288  virtual void PrintOn(ostream & str) const;
1289 
1291  virtual BYTE GetKeyValue() const { return ie_refresh; }
1292 
1296  virtual void StoreDataIn(IAX2IeData &res) { res.refresh = dataValue; }
1297  protected:
1298 };
1299 
1301 
1303 {
1304  PCLASSINFO(IAX2IeDpStatus, IAX2IeShort);
1305  public:
1309  IAX2IeDpStatus(BYTE length, BYTE *srcData) : IAX2IeShort(length, srcData) { };
1310 
1312  virtual void PrintOn(ostream & str) const;
1313 
1315  virtual BYTE GetKeyValue() const { return ie_dpStatus; }
1316 
1320  virtual void StoreDataIn(IAX2IeData &res) { res.dpStatus = dataValue; }
1321  protected:
1322 };
1323 
1325 
1327 {
1328  PCLASSINFO(IAX2IeCallNo, IAX2IeShort);
1329  public:
1333  IAX2IeCallNo(BYTE length, BYTE *srcData) : IAX2IeShort(length, srcData) { };
1334 
1336  virtual void PrintOn(ostream & str) const;
1337 
1339  virtual BYTE GetKeyValue() const { return ie_callNo; }
1340 
1344  virtual void StoreDataIn(IAX2IeData &res) { res.callNo = dataValue; }
1345  protected:
1346 };
1347 
1349 
1351 {
1352  PCLASSINFO(IAX2IeCause, IAX2IeString);
1353  public:
1357  IAX2IeCause(BYTE length, BYTE *srcData) : IAX2IeString(length, srcData) { };
1358 
1360  IAX2IeCause(const PString & newValue) : IAX2IeString(newValue) { }
1361 
1363  IAX2IeCause(const char *newValue) : IAX2IeString(newValue) { }
1364 
1366  virtual void PrintOn(ostream & str) const;
1367 
1369  virtual BYTE GetKeyValue() const { return ie_cause; }
1370 
1374  virtual void StoreDataIn(IAX2IeData &res) { res.cause = dataValue; }
1375  protected:
1376 };
1377 
1379 
1381 {
1382  PCLASSINFO(IAX2IeIaxUnknown, IAX2IeByte);
1383  public:
1387  IAX2IeIaxUnknown(BYTE length, BYTE *srcData) : IAX2IeByte(length, srcData) { };
1388 
1390  IAX2IeIaxUnknown(BYTE newValue) : IAX2IeByte(newValue) { }
1391 
1393  virtual void PrintOn(ostream & str) const;
1394 
1396  virtual BYTE GetKeyValue() const { return ie_iaxUnknown; }
1397 
1401  virtual void StoreDataIn(IAX2IeData &res) { res.iaxUnknown = dataValue; }
1402  protected:
1403 };
1404 
1406 
1408 {
1409  PCLASSINFO(IAX2IeMsgCount, IAX2IeShort);
1410  public:
1414  IAX2IeMsgCount(BYTE length, BYTE *srcData) : IAX2IeShort(length, srcData) { };
1415 
1417  virtual void PrintOn(ostream & str) const;
1418 
1420  virtual BYTE GetKeyValue() const { return ie_msgCount; }
1421 
1425  virtual void StoreDataIn(IAX2IeData &res) { res.msgCount = dataValue; }
1426  protected:
1427 };
1428 
1430 
1432 {
1433  PCLASSINFO(IAX2IeAutoAnswer, IAX2IeNone);
1434  public:
1438  IAX2IeAutoAnswer(BYTE length, BYTE *srcData) : IAX2IeNone(length, srcData) { };
1439 
1441  virtual void PrintOn(ostream & str) const;
1442 
1444  virtual BYTE GetKeyValue() const { return ie_autoAnswer; }
1445 
1449  virtual void StoreDataIn(IAX2IeData &res) { res.autoAnswer = true;; }
1450  protected:
1451 };
1452 
1454 
1456 {
1457  PCLASSINFO(IAX2IeMusicOnHold, IAX2IeNone);
1458  public:
1462  IAX2IeMusicOnHold(BYTE length, BYTE *srcData) : IAX2IeNone(length, srcData) { };
1463 
1466 
1468  virtual void PrintOn(ostream & str) const;
1469 
1471  virtual BYTE GetKeyValue() const { return ie_musicOnHold; }
1472 
1476  virtual void StoreDataIn(IAX2IeData &res) { res.musicOnHold = true; }
1477  protected:
1478 };
1479 
1481 
1483 {
1484  PCLASSINFO(IAX2IeTransferId, IAX2IeInt);
1485  public:
1489  IAX2IeTransferId(BYTE length, BYTE *srcData) : IAX2IeInt(length, srcData) { };
1490 
1492  virtual void PrintOn(ostream & str) const;
1493 
1495  virtual BYTE GetKeyValue() const { return ie_transferId; }
1496 
1500  virtual void StoreDataIn(IAX2IeData &res) { res.transferId = dataValue; }
1501  protected:
1502 };
1503 
1505 
1507 {
1508  PCLASSINFO(IAX2IeRdnis, IAX2IeString);
1509  public:
1513  IAX2IeRdnis(BYTE length, BYTE *srcData) : IAX2IeString(length, srcData) { };
1514 
1516  virtual void PrintOn(ostream & str) const;
1517 
1519  virtual BYTE GetKeyValue() const { return ie_rdnis; }
1520 
1524  virtual void StoreDataIn(IAX2IeData &res) { res.rdnis = dataValue; }
1525  protected:
1526 };
1527 
1529 
1531 {
1533  public:
1537  IAX2IeProvisioning(BYTE length, BYTE *srcData) : IAX2IeBlockOfData (length, srcData) { };
1538 
1540  virtual void PrintOn(ostream & str) const;
1541 
1543  virtual BYTE GetKeyValue() const { return ie_provisioning; }
1544 
1548  virtual void StoreDataIn(IAX2IeData &/*res*/) { }
1549  protected:
1550 };
1551 
1553 
1555 {
1556  PCLASSINFO(IAX2IeAesProvisioning, IAX2IeNone);
1557  public:
1561  IAX2IeAesProvisioning(BYTE length, BYTE *srcData) : IAX2IeNone(length, srcData) { };
1562 
1564  virtual void PrintOn(ostream & str) const;
1565 
1567  virtual BYTE GetKeyValue() const { return ie_aesProvisioning; }
1568 
1572  virtual void StoreDataIn(IAX2IeData &/*res*/) { }
1573  protected:
1574 };
1575 
1577 
1579 {
1580  PCLASSINFO(IAX2IeDateTime, IAX2IeDateAndTime);
1581  public:
1585  IAX2IeDateTime(BYTE length, BYTE *srcData) : IAX2IeDateAndTime(length, srcData) { };
1586 
1588  virtual void PrintOn(ostream & str) const;
1589 
1591  virtual BYTE GetKeyValue() const { return ie_dateTime; }
1592 
1596  virtual void StoreDataIn(IAX2IeData &res) { res.dateTime = dataValue; }
1597  protected:
1598 };
1599 
1601 
1603 {
1604  PCLASSINFO(IAX2IeDeviceType, IAX2IeString);
1605  public:
1609  IAX2IeDeviceType(BYTE length, BYTE *srcData) : IAX2IeString(length, srcData) { };
1610 
1612  virtual void PrintOn(ostream & str) const;
1613 
1615  virtual BYTE GetKeyValue() const { return ie_deviceType; }
1616 
1620  virtual void StoreDataIn(IAX2IeData &res) { res.deviceType = dataValue; }
1621  protected:
1622 };
1623 
1625 
1627 {
1628  PCLASSINFO(IAX2IeServiceIdent, IAX2IeString);
1629  public:
1633  IAX2IeServiceIdent(BYTE length, BYTE *srcData) : IAX2IeString(length, srcData) { };
1634 
1636  virtual void PrintOn(ostream & str) const;
1637 
1639  virtual BYTE GetKeyValue() const { return ie_serviceIdent; }
1640 
1644  virtual void StoreDataIn(IAX2IeData &res) { res.serviceIdent = dataValue; }
1645  protected:
1646 };
1647 
1649 
1651 {
1652  PCLASSINFO(IAX2IeFirmwareVer, IAX2IeShort);
1653  public:
1657  IAX2IeFirmwareVer(BYTE length, BYTE *srcData) : IAX2IeShort(length, srcData) { };
1658 
1660  virtual void PrintOn(ostream & str) const;
1661 
1663  virtual BYTE GetKeyValue() const { return ie_firmwareVer; }
1664 
1668  virtual void StoreDataIn(IAX2IeData &res) { res.firmwareVer = dataValue; }
1669  protected:
1670 };
1671 
1673 
1675 {
1676  PCLASSINFO(IAX2IeFwBlockDesc, IAX2IeUInt);
1677  public:
1681  IAX2IeFwBlockDesc(BYTE length, BYTE *srcData) : IAX2IeUInt(length, srcData) { };
1682 
1684  IAX2IeFwBlockDesc(unsigned int newValue) : IAX2IeUInt(newValue) { }
1685 
1687  virtual void PrintOn(ostream & str) const;
1688 
1690  virtual BYTE GetKeyValue() const { return ie_fwBlockDesc; }
1691 
1695  virtual void StoreDataIn(IAX2IeData &res) { res.fwBlockDesc = dataValue; }
1696  protected:
1697 };
1698 
1700 
1702 {
1703  PCLASSINFO(IAX2IeFwBlockData, IAX2IeBlockOfData);
1704  public:
1708  IAX2IeFwBlockData(BYTE length, BYTE *srcData) : IAX2IeBlockOfData(length, srcData) { };
1709 
1711  virtual void PrintOn(ostream & str) const;
1712 
1714  virtual BYTE GetKeyValue() const { return ie_fwBlockData; }
1715 
1719  virtual void StoreDataIn(IAX2IeData &res) { res.fwBlockData = dataValue; }
1720  protected:
1721 };
1722 
1724 
1726 {
1727  PCLASSINFO(IAX2IeProvVer, IAX2IeUInt);
1728  public:
1732  IAX2IeProvVer(BYTE length, BYTE *srcData) : IAX2IeUInt(length, srcData) { };
1733 
1735  IAX2IeProvVer(unsigned int newValue) : IAX2IeUInt(newValue) { }
1736 
1738  virtual void PrintOn(ostream & str) const;
1739 
1741  virtual BYTE GetKeyValue() const { return ie_provVer; }
1742 
1746  virtual void StoreDataIn(IAX2IeData &res) { res.provVer = dataValue; }
1747  protected:
1748 };
1749 
1751 
1753 {
1754  PCLASSINFO(IAX2IeCallingPres, IAX2IeByte);
1755  public:
1759  IAX2IeCallingPres(BYTE length, BYTE *srcData) : IAX2IeByte(length, srcData) { };
1760 
1762  virtual void PrintOn(ostream & str) const;
1763 
1765  virtual BYTE GetKeyValue() const { return ie_callingPres; }
1766 
1770  virtual void StoreDataIn(IAX2IeData &res) { res.callingPres = dataValue; }
1771  protected:
1772 };
1773 
1775 
1777 {
1778  PCLASSINFO(IAX2IeCallingTon, IAX2IeByte);
1779  public:
1783  IAX2IeCallingTon(BYTE length, BYTE *srcData) : IAX2IeByte(length, srcData) { };
1784 
1786  virtual void PrintOn(ostream & str) const;
1787 
1789  virtual BYTE GetKeyValue() const { return ie_callingTon; }
1790 
1794  virtual void StoreDataIn(IAX2IeData &res) { res.callingTon = dataValue; }
1795  protected:
1796 };
1797 
1799 
1801 {
1802  PCLASSINFO(IAX2IeCallingTns, IAX2IeUShort);
1803  public:
1807  IAX2IeCallingTns(BYTE length, BYTE *srcData) : IAX2IeUShort(length, srcData) { };
1808 
1810  virtual void PrintOn(ostream & str) const;
1811 
1813  virtual BYTE GetKeyValue() const { return ie_callingTns; }
1814 
1818  virtual void StoreDataIn(IAX2IeData &res) { res.callingTns = dataValue; }
1819  protected:
1820 };
1821 
1823 
1825 {
1826  PCLASSINFO(IAX2IeSamplingRate, IAX2IeUShort);
1827  public:
1831  IAX2IeSamplingRate(BYTE length, BYTE *srcData) : IAX2IeUShort(length, srcData) { };
1832 
1834  virtual void PrintOn(ostream & str) const;
1835 
1837  virtual BYTE GetKeyValue() const { return ie_samplingRate; }
1838 
1842  virtual void StoreDataIn(IAX2IeData &res) { res.samplingRate = dataValue; }
1843  protected:
1844 };
1845 
1847 
1849 {
1850  PCLASSINFO(IAX2IeEncryption, IAX2IeUShort);
1851  public:
1855  };
1856 
1859 
1863  IAX2IeEncryption(BYTE length, BYTE *srcData) : IAX2IeUShort(length, srcData) { };
1864 
1866  virtual void PrintOn(ostream & str) const;
1867 
1869  virtual BYTE GetKeyValue() const { return ie_encryption; }
1870 
1874  virtual void StoreDataIn(IAX2IeData &res) { res.encryptionMethods = dataValue; }
1875  protected:
1876 };
1877 
1879 
1881 {
1882  PCLASSINFO(IAX2IeEncKey, IAX2IeString);
1883  public:
1887  IAX2IeEncKey(BYTE length, BYTE *srcData) : IAX2IeString(length, srcData) { };
1888 
1890  virtual void PrintOn(ostream & str) const;
1891 
1893  virtual BYTE GetKeyValue() const { return ie_encKey; }
1894 
1898  virtual void StoreDataIn(IAX2IeData &res) { res.encKey = dataValue; }
1899  protected:
1900 };
1901 
1903 
1905 {
1906  PCLASSINFO(IAX2IeCodecPrefs, IAX2IeByte);
1907  public:
1911  IAX2IeCodecPrefs(BYTE length, BYTE *srcData) : IAX2IeByte(length, srcData) { };
1912 
1914  virtual void PrintOn(ostream & str) const;
1915 
1917  virtual BYTE GetKeyValue() const { return ie_codecPrefs; }
1918 
1922  virtual void StoreDataIn(IAX2IeData &res) { res.codecPrefs = dataValue; }
1923  protected:
1924 };
1925 
1927 
1929 {
1930  PCLASSINFO(IAX2IeReceivedJitter, IAX2IeUInt);
1931  public:
1935  IAX2IeReceivedJitter(BYTE length, BYTE *srcData) : IAX2IeUInt(length, srcData) { };
1936 
1938  virtual void PrintOn(ostream & str) const;
1939 
1941  virtual BYTE GetKeyValue() const { return ie_recJitter; }
1942 
1946  virtual void StoreDataIn(IAX2IeData &res) { res.receivedJitter = dataValue; }
1947  protected:
1948 };
1949 
1951 
1953 {
1954  PCLASSINFO(IAX2IeReceivedLoss, IAX2IeUInt);
1955  public:
1959  IAX2IeReceivedLoss(BYTE length, BYTE *srcData) : IAX2IeUInt(length, srcData) { };
1960 
1962  virtual void PrintOn(ostream & str) const;
1963 
1965  virtual BYTE GetKeyValue() const { return ie_recLoss; }
1966 
1970  virtual void StoreDataIn(IAX2IeData &res) { res.receivedLoss = dataValue; }
1971  protected:
1972 };
1973 
1975 
1977 {
1978  PCLASSINFO(IAX2IeReceivedFrames, IAX2IeUInt);
1979  public:
1983  IAX2IeReceivedFrames(BYTE length, BYTE *srcData) : IAX2IeUInt(length, srcData) { };
1984 
1986  virtual void PrintOn(ostream & str) const;
1987 
1989  virtual BYTE GetKeyValue() const { return ie_recPackets; }
1990 
1994  virtual void StoreDataIn(IAX2IeData &res) { res.receivedPackets = dataValue; }
1995  protected:
1996 };
1997 
1999 
2001 {
2002  PCLASSINFO(IAX2IeReceivedDelay, IAX2IeUShort);
2003  public:
2007  IAX2IeReceivedDelay(BYTE length, BYTE *srcData) : IAX2IeUShort(length, srcData) { };
2008 
2010  virtual void PrintOn(ostream & str) const;
2011 
2013  virtual BYTE GetKeyValue() const { return ie_recDelay; }
2014 
2018  virtual void StoreDataIn(IAX2IeData &res) { res.receivedDelay = dataValue; }
2019  protected:
2020 };
2021 
2023 
2025 {
2026  PCLASSINFO(IAX2IeDroppedFrames, IAX2IeUInt);
2027  public:
2031  IAX2IeDroppedFrames(BYTE length, BYTE *srcData) : IAX2IeUInt(length, srcData) { };
2032 
2034  virtual void PrintOn(ostream & str) const;
2035 
2037  virtual BYTE GetKeyValue() const { return ie_recDropped; }
2038 
2042  virtual void StoreDataIn(IAX2IeData &res) { res.receivedDropped = dataValue; }
2043  protected:
2044 };
2045 
2047 
2049 {
2050  PCLASSINFO(IAX2IeReceivedOoo, IAX2IeUInt);
2051  public:
2055  IAX2IeReceivedOoo(BYTE length, BYTE *srcData) : IAX2IeUInt(length, srcData) { };
2056 
2058  virtual void PrintOn(ostream & str) const;
2059 
2061  virtual BYTE GetKeyValue() const { return ie_recOoo; }
2062 
2066  virtual void StoreDataIn(IAX2IeData &res) { res.receivedOoo = dataValue; }
2067  protected:
2068 };
2069 
2071 
2079 {
2080  PCLASSINFO(IAX2IeCallToken, IAX2IeBinary);
2081  public:
2084  IAX2IeCallToken(BYTE length, BYTE *srcData)
2085  : IAX2IeBinary(length, srcData) { };
2086 
2090 
2092  virtual void PrintOn(ostream & str) const;
2093 
2095  virtual BYTE GetKeyValue() const { return ie_callToken; }
2096 
2100  virtual void StoreDataIn(IAX2IeData &res) { res.callToken = dataValue; }
2101 
2105  static void InitialiseKey();
2106 
2108  void WriteKeySequence(PIPSocket::Address & remoteAddress);
2109 
2112  static PBoolean ValidKeySequence (IAX2IeCallToken & cf,
2113  PIPSocket::Address & remote);
2114 
2115  protected:
2118  static PString ReportKeySequence(const PString & time, PIPSocket::Address & remote);
2119 
2122  enum {
2123  iKeyValue = 0x36,
2124  oKeyValue = 0x5c,
2126  };
2127 
2130  static PString secretKey;
2131 
2134  static BYTE iKeyPad[blockSize];
2135 
2137  static BYTE oKeyPad[blockSize];
2138 };
2140 
2141 
2143 class IAX2IeList : public PList<IAX2Ie>
2144 {
2145  public:
2146  IAX2IeList() { DisallowDeleteObjects(); }
2147  ~IAX2IeList() { AllowDeleteObjects(); }
2148 
2150  int GetBinaryDataSize() const;
2151 };
2152 
2153 
2154 #endif // OPAL_IAX2
2155 
2156 #endif // OPAL_IAX2_IES_H
2157 
2158 /* The comment below is magic for those who use emacs to edit this file.
2159  * With the comment below, the tab key does auto indent to 2 spaces.
2160  *
2161  * Local Variables:
2162  * mode:c
2163  * c-basic-offset:2
2164  * End:
2165  */
int callingTon
Definition: iedata.h:73
Definition: ies.h:79
PBYTEArray dataValue
Definition: ies.h:591
Definition: ies.h:64
Definition: ies.h:85
virtual void PrintOn(ostream &str) const
Definition: ies.h:739
virtual void PrintOn(ostream &str) const
IAX2IeFormat(BYTE length, BYTE *srcData)
Definition: ies.h:970
virtual BYTE GetKeyValue() const
Definition: ies.h:1893
virtual void PrintOn(ostream &str) const
short dataValue
Definition: ies.h:361
Definition: ies.h:323
virtual void StoreDataIn(IAX2IeData &res)
Definition: ies.h:1242
virtual void StoreDataIn(IAX2IeData &res)
Definition: ies.h:875
Definition: ies.h:68
virtual BYTE GetKeyValue() const
Definition: ies.h:1837
Definition: ies.h:1674
Definition: ies.h:65
PString challenge
Definition: iedata.h:89
Definition: ies.h:279
Definition: ies.h:1928
unsigned int transferId
Definition: iedata.h:102
virtual void StoreDataIn(IAX2IeData &res)
Definition: ies.h:1374
virtual BYTE GetKeyValue() const
Definition: ies.h:1615
Definition: ies.h:108
IAX2IeAdsicpe(BYTE length, BYTE *srcData)
Definition: ies.h:1051
virtual void StoreDataIn(IAX2IeData &res)
Definition: ies.h:1874
static PBoolean IsPlainTextAuthentication(short testValue)
Definition: ies.h:1125
Definition: ies.h:1952
PBoolean IsMd5Authentication()
Definition: ies.h:1131
PBYTEArray & GetDataBlock()
Definition: ies.h:1211
static BYTE oKeyPad[blockSize]
Definition: ies.h:2137
Definition: ies.h:87
void InitializeChallengePassword(const PString &newChallenge, const PString &newPassword)
Definition: ies.h:1431
IAX2IeServiceIdent(BYTE length, BYTE *srcData)
Definition: ies.h:1633
unsigned int receivedLoss
Definition: iedata.h:114
virtual void PrintOn(ostream &str) const
Definition: ies.h:60
IAX2IeCallingPres(BYTE length, BYTE *srcData)
Definition: ies.h:1759
void SetData(const PBYTEArray &newData)
Definition: ies.h:669
int GetBinarySize() const
Definition: ies.h:138
PBYTEArray fwBlockData
Definition: iedata.h:108
void CopyData(IAX2IeBinary *src)
PTime dataValue
Definition: ies.h:637
IAX2IeReceivedDelay(BYTE length, BYTE *srcData)
Definition: ies.h:2007
virtual void StoreDataIn(IAX2IeData &res)
Definition: ies.h:1296
IAX2IeBinary()
Definition: ies.h:563
static PBoolean IsMd5Authentication(short testValue)
Definition: ies.h:1122
Definition: ies.h:2000
virtual void WriteBinary(BYTE *data)
virtual void PrintOn(ostream &str) const
Definition: ies.h:1701
virtual BYTE GetKeyValue() const
Definition: ies.h:1444
virtual BYTE GetKeyValue() const
Definition: ies.h:1567
virtual BYTE GetKeyValue() const
Definition: ies.h:2061
PBYTEArray ReadData()
Definition: ies.h:673
Definition: ies.h:1017
IAX2IeTypeCode
Definition: ies.h:56
virtual void PrintOn(ostream &str) const
virtual BYTE GetKeyValue() const
Definition: ies.h:870
Definition: ies.h:84
virtual void StoreDataIn(IAX2IeData &res)
Definition: ies.h:818
Definition: ies.h:102
char dataValue
Definition: ies.h:318
virtual void PrintOn(ostream &str) const
~IAX2IeSockaddrIn()
Definition: ies.h:706
Definition: ies.h:193
IAX2IeRsaResult(const PString &newValue)
Definition: ies.h:1231
unsigned int format
Definition: iedata.h:80
virtual void PrintOn(ostream &str) const
Definition: ies.h:82
Definition: ies.h:1350
IAX2IeDateAndTime()
Definition: ies.h:613
virtual void PrintOn(ostream &str) const
IAX2IeIaxUnknown(BYTE newValue)
Definition: ies.h:1390
virtual BYTE GetKeyValue() const
Definition: ies.h:756
virtual void StoreDataIn(IAX2IeData &res)
Definition: ies.h:1011
Definition: ies.h:110
Definition: ies.h:57
PString password
Definition: iedata.h:78
virtual BYTE GetKeyValue() const
Definition: ies.h:784
Definition: ies.h:1302
virtual void StoreDataIn(IAX2IeData &res)
Definition: ies.h:1524
Definition: ies.h:104
virtual void StoreDataIn(IAX2IeData &res)
Definition: ies.h:1842
PBYTEArray callToken
Definition: iedata.h:119
virtual BYTE GetKeyValue() const
Definition: ies.h:1917
Definition: ies.h:1824
virtual void StoreDataIn(IAX2IeData &res)
Definition: ies.h:2066
Definition: ies.h:825
virtual void StoreDataIn(IAX2IeData &)
Definition: ies.h:1548
virtual void WriteBinary(BYTE *data)
Definition: ies.h:67
virtual void PrintOn(ostream &str) const
IAX2IeList()
Definition: ies.h:2146
IAX2IeFwBlockDesc(unsigned int newValue)
Definition: ies.h:1684
Definition: ies.h:2125
Definition: ies.h:74
virtual BYTE GetLengthOfData() const
Definition: ies.h:135
virtual void WriteBinary(BYTE *data)
Definition: ies.h:271
virtual BYTE GetLengthOfData() const
Definition: ies.h:622
IAX2IeVersion(BYTE length, BYTE *srcData)
Definition: ies.h:1024
PBoolean IsPlainTextAuthentication()
Definition: ies.h:1134
virtual void PrintOn(ostream &str) const
virtual BYTE GetKeyValue() const
Definition: ies.h:898
virtual void PrintOn(ostream &str) const
virtual void StoreDataIn(IAX2IeData &res)
Definition: ies.h:1770
Definition: ies.h:1482
IAX2IeCallingTns(BYTE length, BYTE *srcData)
Definition: ies.h:1807
Definition: ies.h:59
virtual void WriteBinary(BYTE *)
Definition: ies.h:163
unsigned int receivedJitter
Definition: iedata.h:113
IAX2IeEncryptionMethod
Definition: ies.h:1853
virtual void WriteBinary(BYTE *data)
Definition: ies.h:2078
virtual BYTE GetKeyValue() const
Definition: ies.h:1396
static PBoolean IsRsaAuthentication(short testValue)
Definition: ies.h:1119
Definition: ies.h:1068
virtual BYTE GetKeyValue() const
Definition: ies.h:1989
virtual BYTE GetKeyValue() const
Definition: ies.h:1339
IAX2IeCause(const char *newValue)
Definition: ies.h:1363
virtual void PrintOn(ostream &str) const
static PBoolean InternalIsRsa(short testValue)
Definition: ies.h:1139
virtual void StoreDataIn(IAX2IeData &)
Definition: ies.h:1572
virtual void StoreDataIn(IAX2IeData &res)
Definition: ies.h:2100
IAX2IeCalledNumber(BYTE length, BYTE *srcData)
Definition: ies.h:746
virtual void PrintOn(ostream &str) const
virtual BYTE GetKeyValue() const
Definition: ies.h:2013
virtual void StoreDataIn(IAX2IeData &res)
Definition: ies.h:1695
Definition: ies.h:91
static PString secretKey
Definition: ies.h:2130
virtual void StoreDataIn(IAX2IeData &res)
Definition: ies.h:1116
IAX2IeBlockOfData(const PBYTEArray &newData)
Definition: ies.h:654
Definition: ies.h:1221
PBYTEArray dataValue
Definition: ies.h:682
Definition: ies.h:235
virtual void PrintOn(ostream &str) const
virtual void PrintOn(ostream &str) const
Definition: ies.h:88
IAX2IeFirmwareVer(BYTE length, BYTE *srcData)
Definition: ies.h:1657
Definition: ies.h:103
int version
Definition: iedata.h:83
virtual void PrintOn(ostream &str) const
virtual BYTE GetKeyValue() const
Definition: ies.h:1639
PBYTEArray dataBlock
Definition: ies.h:1216
virtual void StoreDataIn(IAX2IeData &res)
Definition: ies.h:903
Definition: ies.h:71
int callingTns
Definition: iedata.h:74
IAX2IePassword(const PString &newValue)
Definition: ies.h:919
virtual void PrintOn(ostream &str) const
virtual BYTE GetKeyValue() const
Definition: ies.h:1369
Definition: ies.h:597
Definition: ies.h:101
Definition: ies.h:2024
IAX2IeDateAndTime(const PTime &newValue)
Definition: ies.h:610
virtual void StoreDataIn(IAX2IeData &res)
Definition: ies.h:1719
Definition: ies.h:75
virtual void StoreDataIn(IAX2IeData &res)
Definition: ies.h:2042
virtual void StoreDataIn(IAX2IeData &res)
Definition: ies.h:2018
virtual BYTE GetKeyValue() const
Definition: ies.h:1591
virtual void PrintOn(ostream &str) const
virtual void PrintOn(ostream &str) const
virtual BYTE GetKeyValue() const
Definition: ies.h:2037
unsigned short dataValue
Definition: ies.h:446
virtual BYTE GetKeyValue() const
Definition: ies.h:1202
virtual void StoreDataIn(IAX2IeData &res)
Definition: ies.h:1038
virtual void PrintOn(ostream &str) const
void WriteKeySequence(PIPSocket::Address &remoteAddress)
virtual BYTE GetKeyValue() const
Definition: ies.h:1741
Definition: ies.h:1506
Definition: ies.h:62
Definition: ies.h:73
IAX2IePassword(BYTE length, BYTE *srcData)
Definition: ies.h:916
IAX2IeSockaddrIn(const PIPSocket::Address &addr, PINDEX port)
Definition: ies.h:699
Definition: ies.h:94
virtual BYTE GetKeyValue() const
Definition: ies.h:1495
IAX2IeCallingAni(const PString &newValue)
Definition: ies.h:807
IAX2IeRefresh(BYTE length, BYTE *srcData)
Definition: ies.h:1282
IAX2IeFwBlockDesc(BYTE length, BYTE *srcData)
Definition: ies.h:1681
virtual BYTE GetKeyValue() const
Definition: ies.h:952
Definition: ies.h:95
virtual void PrintOn(ostream &str) const
Definition: ies.h:990
virtual void StoreDataIn(IAX2IeData &res)
Definition: ies.h:930
virtual void PrintOn(ostream &str) const
virtual void PrintOn(ostream &str) const
Definition: ies.h:86
Definition: ies.h:90
virtual BYTE GetKeyValue() const
Definition: ies.h:1033
PString rdnis
Definition: iedata.h:86
PTime dateTime
Definition: iedata.h:103
Definition: ies.h:546
virtual void PrintOn(ostream &str) const
IAX2IeLanguage(const PString &newValue)
Definition: ies.h:1000
Definition: ies.h:61
Definition: ies.h:1725
virtual void PrintOn(ostream &str) const
void SetData(const PString &newData)
virtual BYTE GetKeyValue() const
Definition: ies.h:144
PBoolean validData
Definition: ies.h:167
Definition: ies.h:98
IAX2IeMd5Result(const PString &newValue)
Definition: ies.h:1187
virtual void StoreDataIn(IAX2IeData &res)
Definition: ies.h:1794
virtual void StoreDataIn(IAX2IeData &res)
Definition: ies.h:1344
void SetData(const PIPSocket::Address &newAddr, PINDEX newPort)
Definition: ies.h:718
virtual void StoreDataIn(IAX2IeData &res)
Definition: ies.h:1898
int callingPres
Definition: iedata.h:75
IAX2IeString()
Definition: ies.h:513
Definition: ies.h:100
IAX2IeTransferId(BYTE length, BYTE *srcData)
Definition: ies.h:1489
IAX2IeCalledContext(const PString &newValue)
Definition: ies.h:864
IAX2IeCallToken()
Definition: ies.h:2089
short authMethods
Definition: iedata.h:87
PIPSocket::Address apparentAddr
Definition: iedata.h:92
virtual void PrintOn(ostream &str) const
Definition: iedata.h:51
Definition: ies.h:78
virtual void PrintOn(ostream &str) const
Definition: ies.h:1044
virtual void PrintOn(ostream &str) const
unsigned short receivedDelay
Definition: iedata.h:116
Definition: ies.h:69
virtual BYTE GetKeyValue() const
Definition: ies.h:1519
PString encKey
Definition: iedata.h:109
virtual void PrintOn(ostream &str) const
virtual void StoreDataIn(IAX2IeData &res)
Definition: ies.h:1269
IAX2IeCallingName(BYTE length, BYTE *srcData)
Definition: ies.h:832
Definition: ies.h:72
Definition: ies.h:81
static IAX2Ie * BuildInformationElement(BYTE _typeCode, BYTE length, BYTE *srcData)
~IAX2IeList()
Definition: ies.h:2147
virtual BYTE GetLengthOfData() const
IAX2IeCapability(unsigned int newValue)
Definition: ies.h:946
virtual BYTE GetKeyValue() const
Definition: ies.h:842
unsigned int dataValue
Definition: ies.h:489
PINDEX refresh
Definition: iedata.h:93
virtual void PrintOn(ostream &str) const
int ReadData()
Definition: ies.h:150
static PBoolean InternalIsPlainText(short testValue)
Definition: ies.h:1145
virtual void PrintOn(ostream &str) const
virtual void PrintOn(ostream &str) const
IAX2IeApparentAddr(BYTE length, BYTE *srcData)
Definition: ies.h:1255
IAX2IeUserName(BYTE length, BYTE *srcData)
Definition: ies.h:889
virtual BYTE GetKeyValue() const
Definition: ies.h:1690
IAX2IeSamplingRate(BYTE length, BYTE *srcData)
Definition: ies.h:1831
IAX2IeRsaResult(BYTE length, BYTE *srcData)
Definition: ies.h:1228
Definition: ies.h:936
PBoolean IsRsaAuthentication()
Definition: ies.h:1128
Definition: ies.h:70
Definition: ies.h:66
IAX2IeCallToken(BYTE length, BYTE *srcData)
Definition: ies.h:2084
IAX2IeDeviceType(BYTE length, BYTE *srcData)
Definition: ies.h:1609
PString codecPrefs
Definition: iedata.h:81
int firmwareVer
Definition: iedata.h:106
virtual void StoreDataIn(IAX2IeData &res)
Definition: ies.h:1746
Definition: ies.h:106
IAX2IeEncryption(IAX2IeEncryptionMethod method=encryptAes128)
IAX2IeEncryption(BYTE length, BYTE *srcData)
Definition: ies.h:1863
Definition: ies.h:882
Definition: ies.h:1248
IAX2IeCapability(BYTE length, BYTE *srcData)
Definition: ies.h:943
virtual BYTE GetKeyValue() const
Definition: ies.h:1965
virtual void WriteBinary(BYTE *data)
virtual BYTE GetKeyValue() const
Definition: ies.h:1543
Definition: ies.h:1976
IAX2IeInvalidElement()
Definition: ies.h:176
IAX2IeProvVer(BYTE length, BYTE *srcData)
Definition: ies.h:1732
IAX2IeCallNo(BYTE length, BYTE *srcData)
Definition: ies.h:1333
IAX2IeFwBlockData(BYTE length, BYTE *srcData)
Definition: ies.h:1708
int musicOnHold
Definition: iedata.h:101
virtual void PrintOn(ostream &str) const
IAX2IeReceivedFrames(BYTE length, BYTE *srcData)
Definition: ies.h:1983
Definition: ies.h:1177
static void InitialiseKey()
PINDEX callNo
Definition: iedata.h:95
Definition: ies.h:92
PString callingName
Definition: iedata.h:72
IAX2IeCalledContext(BYTE length, BYTE *srcData)
Definition: ies.h:861
IAX2IeCause(BYTE length, BYTE *srcData)
Definition: ies.h:1357
virtual void PrintOn(ostream &str) const
virtual void StoreDataIn(IAX2IeData &res)
Definition: ies.h:1401
Definition: ies.h:1904
virtual void StoreDataIn(IAX2IeData &res)
Definition: ies.h:1171
IAX2IeProvVer(unsigned int newValue)
Definition: ies.h:1735
Definition: ies.h:1602
IAX2IeReceivedJitter(BYTE length, BYTE *srcData)
Definition: ies.h:1935
virtual void PrintOn(ostream &str) const
virtual void StoreDataIn(IAX2IeData &res)
Definition: ies.h:1089
Definition: ies.h:83
unsigned int capability
Definition: iedata.h:79
static PString ReportKeySequence(const PString &time, PIPSocket::Address &remote)
virtual void WriteBinary(BYTE *data)
virtual void WriteBinary(BYTE *data)
virtual void WriteBinary(BYTE *data)
IAX2IeDroppedFrames(BYTE length, BYTE *srcData)
Definition: ies.h:2031
PIPSocket::Address ReadData()
Definition: ies.h:722
IAX2IeCause(const PString &newValue)
Definition: ies.h:1360
IAX2IeCallingName(const PString &newValue)
Definition: ies.h:836
virtual BYTE GetKeyValue() const
Definition: ies.h:2095
Definition: ies.h:77
IAX2IeDnid(const PString &newValue)
Definition: ies.h:1078
virtual BYTE GetKeyValue() const
Definition: ies.h:1084
IAX2IeCallingNumber(BYTE length, BYTE *srcData)
Definition: ies.h:774
Definition: remote.h:338
void GetData(PBYTEArray &answer)
virtual BYTE GetKeyValue() const
Definition: ies.h:1291
Definition: ies.h:796
PString md5Result
Definition: iedata.h:90
PString deviceType
Definition: iedata.h:104
virtual void WriteBinary(BYTE *data)
Definition: ies.h:76
Definition: ies.h:1095
virtual void PrintOn(ostream &str) const
Definition: ies.h:1854
virtual ~IAX2Ie()
Definition: ies.h:123
virtual BYTE GetKeyValue() const
Definition: ies.h:1420
virtual void StoreDataIn(IAX2IeData &res)
Definition: ies.h:984
Definition: ies.h:641
Definition: ies.h:112
virtual BYTE GetKeyValue() const
Definition: ies.h:1111
virtual BYTE GetKeyValue() const
Definition: ies.h:1789
IAX2IeAuthMethods(BYTE length, BYTE *srcData)
Definition: ies.h:1102
virtual void WriteBinary(BYTE *)
Definition: ies.h:230
virtual void PrintOn(ostream &str) const
Definition: ies.h:686
Definition: ies.h:909
virtual BYTE GetLengthOfData() const
Definition: ies.h:569
virtual void PrintOn(ostream &str) const
virtual void PrintOn(ostream &str) const
Definition: ies.h:1554
virtual void StoreDataIn(IAX2IeData &)
Definition: ies.h:158
Definition: ies.h:109
IAX2IeCallingNumber(const PString &newValue)
Definition: ies.h:778
IAX2IeVersion()
Definition: ies.h:1027
IAX2IeMusicOnHold()
Definition: ies.h:1465
IAX2IeUserName(const PString &newValue)
Definition: ies.h:892
virtual void StoreDataIn(IAX2IeData &res)
Definition: ies.h:1620
Definition: ies.h:1407
virtual void StoreDataIn(IAX2IeData &res)
Definition: ies.h:1500
virtual void PrintOn(ostream &str) const
IAX2IeAutoAnswer(BYTE length, BYTE *srcData)
Definition: ies.h:1438
IAX2IeRdnis(BYTE length, BYTE *srcData)
Definition: ies.h:1513
void WriteBinary(void *data, PINDEX &writeIndex)
virtual BYTE GetLengthOfData() const
Definition: ies.h:715
Definition: ies.h:854
PString serviceIdent
Definition: iedata.h:105
PTime ReadData()
Definition: ies.h:629
virtual void PrintOn(ostream &str) const
virtual void StoreDataIn(IAX2IeData &res)
Definition: ies.h:1320
virtual void PrintOn(ostream &str) const
IAX2IeBinary(PBYTEArray newValue)
Definition: ies.h:560
virtual BYTE GetlengthOfData()
Definition: ies.h:180
virtual void StoreDataIn(IAX2IeData &res)
Definition: ies.h:1970
virtual void PrintOn(ostream &str) const
virtual void PrintOn(ostream &str) const
virtual void StoreDataIn(IAX2IeData &res)
Definition: ies.h:1476
virtual PBoolean IsValid()
Definition: ies.h:132
IAX2IeMusicOnHold(BYTE length, BYTE *srcData)
Definition: ies.h:1462
Definition: ies.h:99
Definition: ies.h:2048
BYTE iaxUnknown
Definition: iedata.h:98
virtual void PrintOn(ostream &str) const
Definition: ies.h:183
IAX2IeString(const PString &newValue)
Definition: ies.h:507
virtual BYTE GetKeyValue() const
Definition: ies.h:1813
virtual BYTE GetKeyValue() const
Definition: ies.h:1057
virtual void PrintOn(ostream &str) const
PString dataValue
Definition: ies.h:540
IAX2IeMsgCount(BYTE length, BYTE *srcData)
Definition: ies.h:1414
virtual BYTE GetKeyValue() const
Definition: ies.h:1471
Definition: ies.h:1800
virtual BYTE GetKeyValue() const
Definition: ies.h:1006
void SetData(int &)
Definition: ies.h:147
virtual BYTE GetKeyValue() const
Definition: ies.h:1663
IAX2IeFormat(unsigned int newValue)
Definition: ies.h:973
IAX2IeCalledNumber(const PString &newValue)
Definition: ies.h:750
PINDEX adsicpe
Definition: iedata.h:84
Definition: ies.h:107
virtual void StoreDataIn(IAX2IeData &res)
Definition: ies.h:957
Definition: ies.h:51
IAX2IeProvisioning(BYTE length, BYTE *srcData)
Definition: ies.h:1537
static BYTE iKeyPad[blockSize]
Definition: ies.h:2134
PINDEX portNumber
Definition: ies.h:734
PString ReadData()
Definition: ies.h:531
Definition: ies.h:1848
virtual BYTE GetKeyValue() const
Definition: ies.h:813
virtual BYTE GetKeyValue() const
Definition: ies.h:1714
PString rsaResult
Definition: iedata.h:91
virtual void StoreDataIn(IAX2IeData &res)
Definition: ies.h:1668
Definition: ies.h:93
virtual void StoreDataIn(IAX2IeData &res)
Definition: ies.h:847
void PrintOn(ostream &str) const
Definition: ies.h:2124
Definition: ies.h:111
IAX2IeAesProvisioning(BYTE length, BYTE *srcData)
Definition: ies.h:1561
IAX2IeEncKey(BYTE length, BYTE *srcData)
Definition: ies.h:1887
virtual BYTE GetKeyValue() const
Definition: ies.h:979
PString calledNumber
Definition: iedata.h:69
virtual void StoreDataIn(IAX2IeData &res)
Definition: ies.h:1644
IAX2IeMd5Result(BYTE length, BYTE *srcData)
Definition: ies.h:1184
virtual BYTE GetKeyValue() const
Definition: ies.h:1166
IAX2IeReceivedLoss(BYTE length, BYTE *srcData)
Definition: ies.h:1959
virtual BYTE GetKeyValue() const
Definition: ies.h:925
virtual BYTE GetKeyValue() const
Definition: ies.h:1869
static PBoolean ValidKeySequence(IAX2IeCallToken &cf, PIPSocket::Address &remote)
virtual void StoreDataIn(IAX2IeData &res)
Definition: ies.h:1425
Definition: ies.h:1578
void SetData(const PTime &newData)
Definition: ies.h:625
PString dnid
Definition: iedata.h:85
virtual void StoreDataIn(IAX2IeData &res)
Definition: ies.h:1922
PINDEX dpStatus
Definition: iedata.h:94
BYTE dataValue
Definition: ies.h:274
PString callingAni
Definition: iedata.h:71
PINDEX samplingRate
Definition: iedata.h:111
Definition: ies.h:89
Definition: ies.h:172
virtual void PrintOn(ostream &str) const
virtual void StoreDataIn(IAX2IeData &res)
Definition: ies.h:1596
virtual BYTE GetLengthOfData() const
Definition: ies.h:666
virtual void PrintOn(ostream &str) const
Definition: ies.h:963
virtual void WriteBinary(BYTE *)
Definition: ies.h:189
PString language
Definition: iedata.h:82
PString calledContext
Definition: iedata.h:76
int GetBinaryDataSize() const
unsigned int receivedOoo
Definition: iedata.h:118
Definition: ies.h:1752
IAX2IeSockaddrIn()
Definition: ies.h:703
Definition: ies.h:96
IAX2IeAuthMethods(short newValue)
Definition: ies.h:1105
static PBoolean InternalIsMd5(short testValue)
Definition: ies.h:1142
virtual void PrintOn(ostream &str) const
unsigned int encryptionMethods
Definition: iedata.h:88
IAX2IeCallingAni(BYTE length, BYTE *srcData)
Definition: ies.h:803
virtual void PrintOn(ostream &str) const
virtual void StoreDataIn(IAX2IeData &res)
Definition: ies.h:1207
PIPSocket::Address dataValue
Definition: ies.h:731
unsigned int receivedPackets
Definition: iedata.h:115
IAX2IeRefresh(short refreshTime)
Definition: ies.h:1285
virtual BYTE GetKeyValue() const
Definition: ies.h:1237
Definition: ies.h:767
virtual void PrintOn(ostream &str) const
PString cause
Definition: iedata.h:96
virtual void StoreDataIn(IAX2IeData &res)
Definition: ies.h:761
Definition: ies.h:408
Definition: ies.h:113
virtual void StoreDataIn(IAX2IeData &res)
Definition: ies.h:1946
IAX2IeDateTime(BYTE length, BYTE *srcData)
Definition: ies.h:1585
virtual BYTE GetKeyValue() const
Definition: ies.h:1765
IAX2IeCodecPrefs(BYTE length, BYTE *srcData)
Definition: ies.h:1911
IAX2IeChallenge(BYTE length, BYTE *srcData)
Definition: ies.h:1157
Definition: ies.h:1776
Definition: ies.h:494
Definition: ies.h:63
int autoAnswer
Definition: iedata.h:100
Definition: ies.h:1275
PString userName
Definition: iedata.h:77
~IAX2IeApparentAddr()
Definition: ies.h:1258
Definition: ies.h:450
Definition: ies.h:58
virtual void PrintOn(ostream &str) const
Definition: ies.h:80
virtual void PrintOn(ostream &str) const
unsigned int provVer
Definition: iedata.h:110
Definition: ies.h:1626
virtual void StoreDataIn(IAX2IeData &res)
Definition: ies.h:1062
Definition: ies.h:105
Definition: ies.h:1380
IAX2IeString(const char *newValue)
Definition: ies.h:510
Definition: ies.h:1150
Definition: ies.h:1455
virtual BYTE GetKeyValue() const
Definition: ies.h:1315
IAX2IeChallenge(const PString &newValue)
Definition: ies.h:1160
IAX2IeCallingTon(BYTE length, BYTE *srcData)
Definition: ies.h:1783
IAX2IeBlockOfData()
Definition: ies.h:657
Definition: ies.h:2123
Definition: ies.h:1880
virtual void StoreDataIn(IAX2IeData &res)
Definition: ies.h:1818
int msgCount
Definition: iedata.h:99
Definition: ies.h:1530
Definition: ies.h:2143
int dataValue
Definition: ies.h:404
virtual void WriteBinary(BYTE *data)
Definition: ies.h:315
IAX2IeDnid(BYTE length, BYTE *srcData)
Definition: ies.h:1075
IAX2IeLanguage(BYTE length, BYTE *srcData)
Definition: ies.h:997
virtual void StoreDataIn(IAX2IeData &res)
Definition: ies.h:1449
virtual void StoreDataIn(IAX2IeData &res)
Definition: ies.h:1994
unsigned int fwBlockDesc
Definition: iedata.h:107
Definition: ies.h:1650
IAX2IeDpStatus(BYTE length, BYTE *srcData)
Definition: ies.h:1309
unsigned int receivedDropped
Definition: iedata.h:117
PString callingNumber
Definition: iedata.h:70
Definition: ies.h:365
virtual BYTE GetKeyValue() const
Definition: ies.h:1941
virtual void PrintOn(ostream &str) const
virtual void PrintOn(ostream &str) const
virtual BYTE GetKeyValue() const
Definition: ies.h:1264
Definition: ies.h:1326
virtual void WriteBinary(BYTE *data)
Definition: ies.h:97
virtual void StoreDataIn(IAX2IeData &res)
Definition: ies.h:789
IAX2IeReceivedOoo(BYTE length, BYTE *srcData)
Definition: ies.h:2055
void SetData(const PBYTEArray &newData)
IAX2IeIaxUnknown(BYTE length, BYTE *srcData)
Definition: ies.h:1387
virtual void PrintOn(ostream &str) const