func (receiver *Utility) ParseCIDR(cidr string) (*Ipv4Address, error) {
	ip, ipNet, err := net.ParseCIDR(cidr)
	if err != nil {
		logging.Logger().Debug(err.Error())
		return nil, err
	}
	ip = ip.To4()
	result := &Ipv4Address{}
	result.v4address = (uint32(ip[0])<<24 | (uint32(ip[1]) << 16) | (uint32(ip[2]) << 8) | uint32(ip[3]))
	prefix, _ := ipNet.Mask.Size()
	result.prefix = uint(prefix)
	result.mask = (uint32(ipNet.Mask[0])<<24 | (uint32(ipNet.Mask[1]) << 16) | (uint32(ipNet.Mask[2]) << 8) | uint32(ipNet.Mask[3]))
	result.network = (result.v4address & result.mask) >> uint32(32-prefix)
	result.host = (result.v4address & ^result.mask)
	return result, nil
}
ParseCIDR parses CIDR string and generate Ipv4Address instance based on that
package network
import (
	"encoding/binary"
	"fmt"
	"github.com/qb0C80aE/clay/logging"
	"net"
)
var utility = &Utility{}
type Utility struct {
}
func GetUtility() *Utility {
	return utility
}