/// <summary> /// Creates a new instance of this class. /// </summary> public RIPUpdate() { afiAddressFamilyIdentifier = RIPEntryAddressFamily.IPv4; bRouteTag = new byte[2]; smSubnetMask = new Subnetmask(); ipaNextHop = IPAddress.Any; ipaAddress = IPAddress.Any; iMetric = 0; }
/// <summary> /// Creates a new instance of this class with the given properties. /// </summary> /// <param name="afiAddressFamilyIdentifier">The address family identifier</param> /// <param name="bRouteTag">The route tag for RIPv2, a byte array of length two</param> /// <param name="smMask">The subnetmask for RIPv2</param> /// <param name="ipaNextHop">The IPAddress of the next hop for RIPv2</param> /// <param name="ipaAddress">The IPAddress of the destination</param> /// <param name="iMetric">The metric</param> public RIPUpdate(RIPEntryAddressFamily afiAddressFamilyIdentifier, byte[] bRouteTag, Subnetmask smMask, IPAddress ipaNextHop, IPAddress ipaAddress, uint iMetric) { this.afiAddressFamilyIdentifier = afiAddressFamilyIdentifier; if (bRouteTag.Length != 2) { throw new ArgumentException("Invalid route tag. Must be a byte-array of len two"); } this.bRouteTag = bRouteTag; this.smSubnetMask = smMask; this.ipaNextHop = ipaNextHop; this.ipaAddress = ipaAddress; this.iMetric = iMetric; }
/// <summary> /// Creates a new instance of this class by parsing the given data. /// </summary> /// <param name="bData">The data to parse.</param> public RIPUpdate(byte[] bData) { afiAddressFamilyIdentifier = (RIPEntryAddressFamily)((bData[0] << 8) + bData[1]); bRouteTag = new byte[2]; bRouteTag[0] = bData[2]; bRouteTag[1] = bData[3]; byte[] bAddressBytes = new byte[4]; bAddressBytes[0] = bData[4]; bAddressBytes[1] = bData[5]; bAddressBytes[2] = bData[6]; bAddressBytes[3] = bData[7]; ipaAddress = new IPAddress(bAddressBytes); smSubnetMask = new Subnetmask(); smSubnetMask.MaskBytes[0] = bData[8]; smSubnetMask.MaskBytes[1] = bData[9]; smSubnetMask.MaskBytes[2] = bData[10]; smSubnetMask.MaskBytes[3] = bData[11]; bAddressBytes[0] = bData[12]; bAddressBytes[1] = bData[13]; bAddressBytes[2] = bData[14]; bAddressBytes[3] = bData[15]; ipaNextHop = new IPAddress(bAddressBytes); iMetric = (uint)((bData[16] << 24) + (bData[17] << 16) + (bData[18] << 8) + bData[19]); }