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()); }
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; }
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()); }
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)); }
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 ))); }