protected VariableParam readErrorParam() { int type = _body.GetUShort(); int len = _body.GetUShort(); int blen = len - 4; //byte[] data; KnownError var = null; switch (type) { case 1: var = new KnownError(1, "InvalidStreamIdentifier"); break; //[RFC4960] case 2: var = new KnownError(2, "MissingMandatoryParameter"); break; //[RFC4960] case 3: var = new StaleCookieError(); break; //[RFC4960] case 4: var = new KnownError(4, "OutofResource"); break; //[RFC4960] case 5: var = new KnownError(5, "UnresolvableAddress"); break; //[RFC4960] case 6: var = new KnownError(6, "UnrecognizedChunkType"); break; //[RFC4960] case 7: var = new KnownError(7, "InvalidMandatoryParameter"); break; //[RFC4960] case 8: var = new KnownError(8, "UnrecognizedParameters"); break; //[RFC4960] case 9: var = new KnownError(9, "NoUserData"); break; //[RFC4960] case 10: var = new KnownError(10, "CookieReceivedWhileShuttingDown"); break; //[RFC4960] case 11: var = new KnownError(11, "RestartofanAssociationwithNewAddresses"); break; //[RFC4960] case 12: var = new KnownError(12, "UserInitiatedAbort"); break; //[RFC4460] case 13: var = new ProtocolViolationError(13, "ProtocolViolation"); break; //[RFC4460] // 14-159,Unassigned, case 160: var = new KnownError(160, "RequesttoDeleteLastRemainingIPAddress"); break; //[RFC5061] case 161: var = new KnownError(161, "OperationRefusedDuetoResourceShortage"); break; //[RFC5061] case 162: var = new KnownError(162, "RequesttoDeleteSourceIPAddress"); break; //[RFC5061] case 163: var = new KnownError(163, "AssociationAbortedduetoillegalASCONF-ACK"); break; //[RFC5061] case 164: var = new KnownError(164, "Requestrefused-noauthorization"); break; //[RFC5061] // 165-260,Unassigned, case 261: var = new KnownError(261, "UnsupportedHMACIdentifier"); break; //[RFC4895] // 262-65535,Unassigned, } try { var.readBody(_body, blen); //logger.LogDebug("variable type " + var.getType() + " name " + var.getName()); //logger.LogDebug("additional info " + var.ToString()); } catch (SctpPacketFormatException ex) { logger.LogError(ex.ToString()); } if (_body.hasRemaining()) { int mod = blen % 4; if (mod != 0) { for (int pad = mod; pad < 4; pad++) { _body.GetByte(); } } } return(var); }
public ErrorChunk(KnownError e) : this() { _varList.Add(e); }