Example #1
0
 protected override void putFixedParams(ByteBuffer ret)
 {
     ret.Put(_initiateTag);
     ret.Put(_adRecWinCredit);
     ret.Put((ushort)_numOutStreams);
     ret.Put((ushort)_numInStreams);
     ret.Put(_initialTSN);
     if (_cookie != null)
     {
         StateCookie sc = new StateCookie();
         sc.setData(_cookie);
         _varList.Add(sc);
     }
     if (_supportedExtensions != null)
     {
         SupportedExtensions se = new SupportedExtensions();
         se.setData(_supportedExtensions);
         _varList.Add(se);
     }
 }
Example #2
0
        protected VariableParam readVariable()
        {
            int type = _body.GetUShort();
            int len  = _body.GetUShort();
            int blen = len - 4;
            //byte[] data;
            Unknown var;

            switch (type)
            {
            case 1:
                var = new HeartbeatInfo(1, "HeartbeatInfo");
                break;

            //      2-4	Unassigned
            case 5:
                var = new IPv4Address(5, "IPv4Address");
                break;

            case 6:
                var = new IPv6Address(6, "IPv6Address");
                break;

            case 7:
                var = new StateCookie(7, "StateCookie");
                break;

            case 8:
                var = new UnrecognizedParameters(8, "UnrecognizedParameters");
                break;

            case 9:
                var = new CookiePreservative(9, "CookiePreservative");
                break;

            //      10	Unassigned
            case 11:
                var = new HostNameAddress(11, "HostNameAddress");
                break;

            case 12:
                var = new SupportedAddressTypes(12, "SupportedAddressTypes");
                break;

            case 13:
                var = new OutgoingSSNResetRequestParameter(13, "OutgoingSSNResetRequestParameter");
                break;

            case 14:
                var = new IncomingSSNResetRequestParameter(14, "IncomingSSNResetRequestParameter");
                break;

            case 15:
                var = new SSNTSNResetRequestParameter(15, "SSNTSNResetRequestParameter");
                break;

            case 16:
                var = new ReconfigurationResponseParameter(16, "ReconfigurationResponseParameter");
                break;

            case 17:
                var = new AddOutgoingStreamsRequestParameter(17, "AddOutgoingStreamsRequestParameter");
                break;

            case 18:
                var = new AddIncomingStreamsRequestParameter(18, "AddIncomingStreamsRequestParameter");
                break;

            //      19-32767	Unassigned
            case 32768:
                var = new Unknown(32768, "ReservedforECNCapable");
                break;

            case 32770:
                var = new RandomParam(32770, "Random");
                break;

            case 32771:
                var = new ChunkListParam(32771, "ChunkList");
                break;

            case 32772:
                var = new RequestedHMACAlgorithmParameter(32772, "RequestedHMACAlgorithmParameter");
                break;

            case 32773:
                var = new Unknown(32773, "Padding");
                break;

            case 32776:
                var = new SupportedExtensions(32776, "SupportedExtensions");
                break;

            //      32777-49151	Unassigned
            case 49152:
                var = new ForwardTSNsupported(49152, "ForwardTSNsupported");
                break;

            case 49153:
                var = new Unknown(49153, "AddIPAddress");
                break;

            case 49154:
                var = new Unknown(49154, "DeleteIPAddress");
                break;

            case 49155:
                var = new Unknown(49155, "ErrorCauseIndication");
                break;

            case 49156:
                var = new Unknown(49156, "SetPrimaryAddress");
                break;

            case 49157:
                var = new Unknown(49157, "SuccessIndication");
                break;

            case 49158:
                var = new Unknown(49158, "AdaptationLayerIndication");
                break;

            default:
                var = new Unknown(-1, "Unknown");
                break;
            }
            try
            {
                var.readBody(_body, blen);
                //logger.LogDebug("variable type " + var.getType() + " name " + var.getName());
            }
            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);
        }