Beispiel #1
0
 /// <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);
 }
Beispiel #2
0
        /// <summary>
        ///   インスタンスがsrcで示されるアドレスと同じかどうかを返す
        ///   一般オブジェクトとの比較バージョン。
        /// </summary>
        public override bool Equals(Object obj)
        {
            if (obj == null)
            {
                return(false);
            }
            Hwaddr src = obj as Hwaddr;

            return(Equals(src));
        }
Beispiel #3
0
        /// <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);
        }
Beispiel #4
0
 /// <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);
     }
 }
Beispiel #5
0
        /// <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);
        }
Beispiel #6
0
 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);
 }
Beispiel #7
0
        /// <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();
            }
        }
Beispiel #8
0
 /// <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);
 }
Beispiel #9
0
 /// <summary>
 ///   値をセットする
 /// </summary>
 public void Set(Hwaddr addr)
 {
     StartAddr.Set(addr);
     EndAddr.Set(addr);
 }
Beispiel #10
0
 /// <summary>
 ///   コンストラクタ
 /// </summary>
 public HwaddrRange(Hwaddr addr)
 {
     StartAddr.Set(addr);
     EndAddr.Set(addr);
 }
Beispiel #11
0
 /// <summary>
 ///   コンストラクタ
 /// </summary>
 public HwaddrRange(Hwaddr start, Hwaddr end)
 {
     Set(start, end);
 }
Beispiel #12
0
 /// <summary>
 ///   コピーコンストラクタ
 /// </summary>
 public Hwaddr(Hwaddr src)
 {
     Set(src);
 }
Beispiel #13
0
 /// <summary>
 ///   アドレス値の大小を比較する。
 /// </summary>
 public static int Compare(Hwaddr a, Hwaddr b)
 {
     return(a.CompareTo(b));
 }
Beispiel #14
0
 /// <summary>
 ///   インスタンスがsrcで示されるアドレスパターンを内包しているかどうかをチェックする。
 /// </summary>
 public bool Contains(Hwaddr src)
 {
     return(ToString().Contains(src.ToString()));
 }