/// <summary> /// Generates an 802.21-encoded message representing a LinkDown Event. /// </summary> /// <param name="srcID">The local node ID</param> /// <param name="dstID">The destination MIHF ID</param> /// <param name="ssid">The SSID of the disconnected network</param> /// <param name="PoAMac">The Physical Address for the Point of Access</param> /// <param name="reason">The reason for the disconnect</param> /// <returns>A fully encoded, ready to be sent Message representing a LinkDown</returns> public static Message Link_Down_Indication_802_11_MsgBuilder(ID srcID, ID dstID, String ssid, PhysicalAddress PoAMac, Link_Dn_Reason reason) { Message m = new Message(); m.MIHHeader = new MIHHeader(); m.MIHHeader.MID = new MessageID(MessageID.ServiceIdentifier.EVENT_SERVICE, MessageID.OperationCode.INDICATION, 3); m.MIHHeader.VersionValue = 1; Link_Tuple_Id linkIdentifier = new Link_Tuple_Id( new Link_Id(Link_Type.Wireless_IEEE80211, new Link_Addr(Link_Addr.Address_Type.OTHER_L2_ADDR, ssid)), new Link_Addr(Link_Addr.Address_Type.MAC_ADDR, Utilities.PhysicalAddressToString(PoAMac))); Link_Dn_Reason downReason = reason; m.Payload = new Payload(srcID, dstID, TLV_HELPERS.TLVLinkIdentifier(linkIdentifier), TLV_HELPERS.TLVLinkDnReason(downReason)); m.MIHHeader.PayloadLength = (ushort)m.Payload.PayloadValue.Length; return m; }
public static byte[] TLVLinkDnReason(Link_Dn_Reason linkDnReason) { byte[] aux = { IntToByte((int)linkDnReason) }; return Serialization.SerializeToTLV(TLV_VALUES.TLV_LINK_DOWN_REASON_CODE, aux); }
/// <summary> /// The Link Down Event Class constructor. /// </summary> /// <param name="LinkIdentifier">The Link Identifier.</param> /// <param name="OldAccessRouter">The Old Access Router Address.</param> /// <param name="ReasonCode">The Reason Code, for the link down event.</param> public Link_Down(Link_Tuple_Id LinkIdentifier, Link_Addr OldAccessRouter, Link_Dn_Reason ReasonCode) : base(LinkIdentifier) { this.OldAccessRouter = OldAccessRouter; this.ReasonCode = ReasonCode; }