/// <summary> /// アドレス値の大小を比較する。 /// </summary> public int CompareTo(Hwaddr src) { if (vals == null) { return(-1); } if ((src == null) || (src.vals == null)) { return(1); } if (vals.Length < src.vals.Length) { return(-1); } if (vals.Length > src.vals.Length) { return(1); } for (int i = 0; i < vals.Length; i++) { if (vals[i] < src.vals[i]) { return(-1); } if (vals[i] > src.vals[i]) { return(1); } } return(0); }
/// <summary> /// インスタンスがsrcで示されるアドレスと同じかどうかを返す /// 一般オブジェクトとの比較バージョン。 /// </summary> public override bool Equals(Object obj) { if (obj == null) { return(false); } Hwaddr src = obj as Hwaddr; return(Equals(src)); }
/// <summary> /// ベンダコードをMACアドレス範囲として得る /// </summary> /// <remarks> /// <para> /// srcの上位3オクテットのみをベンダコードとして用います。 /// </para> /// </remarks> public static HwaddrRange GetVendorCode(Hwaddr src) { byte[] vals = new byte[6]; src.GetBytes(vals, 0); HwaddrRange addr = new HwaddrRange(); vals[3] = vals[4] = vals[5] = 0x00; addr.StartAddr.Set(vals, 0, 6); vals[3] = vals[4] = vals[5] = 0xff; addr.EndAddr.Set(vals, 0, 6); return(addr); }
/// <summary> /// 値をセットする /// </summary> public void Set(Hwaddr start, Hwaddr end) { if (start <= end) { StartAddr.Set(start); EndAddr.Set(end); } else { StartAddr.Set(end); EndAddr.Set(start); } }
/// <summary> /// OUI(ベンダーコード)を獲得する。 /// </summary> /// <returns>OUIの3バイトだけが定義されたHwaddrインスタンス</returns> public Hwaddr GetOui() { if ((vals == null) || (vals.Length < 3)) { return(new Hwaddr()); } Hwaddr res = new Hwaddr(); res.vals = new byte[3]; for (int i = 0; i < 3; i++) { res.vals[i] = vals[i]; } return(res); }
public Hwaddr Set(Hwaddr src) { if (src.IsValid()) { vals = new byte[src.vals.Length]; for (int i = 0; i < vals.Length; i++) { vals[i] = src.vals[i]; } } else { vals = null; } return(this); }
/// <summary> /// アドレス範囲をアドレスリストに追加する /// </summary> /// <param name="list">このリストに追加する</param> /// <param name="limit">最大件数(負の場合制限無し)</param> public void GetList(List <Hwaddr> list, int limit) { Hwaddr addr = new Hwaddr(StartAddr); while (addr <= EndAddr) { if ((limit >= 0) && (list.Count >= limit)) { return; } if (!list.Contains(addr)) { list.Add(new Hwaddr(addr)); } addr.Incr(); } }
/// <summary> /// インスタンスがsrcで示されるアドレスと同じかどうかを返す /// </summary> public bool Equals(Hwaddr src) { if ((vals == null) || (src == null) || (src.vals == null)) { return(false); } if (vals.Length != src.vals.Length) { return(false); } for (int i = 0; i < vals.Length; i++) { if (vals[i] != src.vals[i]) { return(false); } } return(true); }
/// <summary> /// 値をセットする /// </summary> public void Set(Hwaddr addr) { StartAddr.Set(addr); EndAddr.Set(addr); }
/// <summary> /// コンストラクタ /// </summary> public HwaddrRange(Hwaddr addr) { StartAddr.Set(addr); EndAddr.Set(addr); }
/// <summary> /// コンストラクタ /// </summary> public HwaddrRange(Hwaddr start, Hwaddr end) { Set(start, end); }
/// <summary> /// コピーコンストラクタ /// </summary> public Hwaddr(Hwaddr src) { Set(src); }
/// <summary> /// アドレス値の大小を比較する。 /// </summary> public static int Compare(Hwaddr a, Hwaddr b) { return(a.CompareTo(b)); }
/// <summary> /// インスタンスがsrcで示されるアドレスパターンを内包しているかどうかをチェックする。 /// </summary> public bool Contains(Hwaddr src) { return(ToString().Contains(src.ToString())); }