Ejemplo n.º 1
0
        static string ipv6_as_compressed(IpBits ip_bits, BigInteger host_address)
        {
            //println!("ipv6_as_compressed:{}", host_address);
            var ret       = new StringBuilder();
            var the_colon = ":";
            var the_empty = "";
            var colon     = the_empty;
            var done      = false;

            foreach (var rle in Rle.code(ip_bits.parts(host_address)))
            {
                var abort = false;
                for (var i = 0; !abort && i < rle.cnt; i++)
                {
                    if (done || !(rle.part == 0 && rle.max))
                    {
                        ret.Append(colon);
                        ret.Append(rle.part.ToString("x"));
                        colon = the_colon;
                    }
                    else if (rle.part == 0 && rle.max)
                    {
                        ret.Append("::");
                        colon = the_empty;
                        done  = true;
                        abort = true;
                    }
                }
            }

            return(ret.ToString());
        }
Ejemplo n.º 2
0
 public Prefix(uint num, IpBits ip_bits, BigInteger netmask, VtFrom vtfrom)
 {
     this.num      = num;
     this.ip_bits  = ip_bits;
     this.net_mask = netmask;
     this.vt_from  = vtfrom;
 }
Ejemplo n.º 3
0
        static string ipv6_as_uncompressed(IpBits ip_bits, BigInteger host_address)
        {
            var ret = new StringBuilder();
            var sep = "";

            foreach (var part in ip_bits.parts(host_address))
            {
                ret.Append(sep);
                ret.Append(part.ToString("x4"));
                sep = ":";
            }
            return(ret.ToString());
        }
Ejemplo n.º 4
0
        public List <uint> parts(BigInteger bu)
        {
            var len      = (this.bits / this.part_bits);
            var vec      = new List <uint>();
            var my       = bu;
            var part_mod = (new BigInteger(1)) << (int)this.part_bits;// - BigUint::one();

            for (var i = 0; i < len; i++)
            {
                var v = (uint)(my % part_mod);
                vec.Add(v);
                my = my >> (int)this.part_bits;
            }
            return(IpBits.reverse(vec));
        }
Ejemplo n.º 5
0
        public static Result <IPAddress> from_u32(UInt32 addr, uint _prefix)
        {
            var prefix = Prefix32.create(_prefix);

            if (prefix.isErr())
            {
                return(Result <IPAddress> .Err(prefix.unwrapErr()));
            }
            return(Result <IPAddress> .Ok(new IPAddress(
                                              IpBits.v4(),
                                              new BigInteger(addr),
                                              prefix.unwrap(),
                                              null,
                                              ipv4_is_private,
                                              ipv4_is_loopback,
                                              to_ipv6
                                              )));
        }