Repository

IP

IP v4 / v6 structs to parse and render IPs.

module main

import khalyomede.ip { Ipv4 }

fn main() {
  address := Ipv4.parse("192.168.1.1") or { Ipv4{} }
}

Summary

About

This package parses IP v4 / v6 and ensures IPs are valid before manipulation.

Features

  • Parses IPv4 and IPv6
  • Returns error if IP v4/v6 are invalid during parse
  • Can be cast to string and canonical format ("full format" for IP v6)

Installation

Using V installer

Run this command in the root of your project:

v install khalyomede/ip

Examples

Parsing IP v4

module main

import khalyomede.ip { Ipv4 }

fn main() {
  address := Ipv4.parse("8.8.8.8") or { Ipv4{address: [u8(8), 8, 8, 8]!} }
}

back to examples

Parsing IP v6

module main

import khalyomede.ip { Ipv6 }

fn main() {
  address := Ipv6.parse("2001:db8:3333:4444:5555:6666:7777:8888") or { Ipv6{} }
}

back to examples

Casting Ipv4 to string

module main

import khalyomede.ip { Ipv4 }

fn main() {
  address := Ipv4{}

  assert "${address}" == "0.0.0.0"
}

back to examples

Casting Ipv6 to string

module main

import khalyomede.ip { Ipv6 }

fn main() {
  address := Ipv6{}

  assert "${address}" == "::"
}

back to examples

Casting IPv6 to full string

module main

import khalyomede.ip { Ipv6 }

fn main() {
  address := Ipv6.parse("2001:db8::1") or { Ipv6{} }

  assert address.to_full_string() == "2001:0db8:0000:0000:0000:0000:0000:0001"
}

back to examples

Comparing two Ipv6

module main

import khalyomede.ip { Ipv6 }

fn main() {
  first_address := Ipv6.parse("2001:db8::1") or { Ipv6{} }
  second_address := Ipv6.parse("2001:0db8:0000:0000:0000:0000:0000:0001") or { Ipv6{} }

  assert first_address == second_address
}

back to examples

About

IP v4 / v6 structs to parse and render IPs.

0
0
last Oct 5

Author

khalyomede