12345678910111213141516171819202122232425262728293031323334353637383940414243 |
- package opts
- import (
- "fmt"
- "net"
- )
- // IPOpt holds an IP. It is used to store values from CLI flags.
- type IPOpt struct {
- *net.IP
- }
- // NewIPOpt creates a new IPOpt from a reference net.IP and a
- // string representation of an IP. If the string is not a valid
- // IP it will fallback to the specified reference.
- func NewIPOpt(ref *net.IP, defaultVal string) *IPOpt {
- o := &IPOpt{
- IP: ref,
- }
- o.Set(defaultVal)
- return o
- }
- // Set sets an IPv4 or IPv6 address from a given string. If the given
- // string is not parseable as an IP address it returns an error.
- func (o *IPOpt) Set(val string) error {
- ip := net.ParseIP(val)
- if ip == nil {
- return fmt.Errorf("%s is not an ip address", val)
- }
- *o.IP = ip
- return nil
- }
- // String returns the IP address stored in the IPOpt. If stored IP is a
- // nil pointer, it returns an empty string.
- func (o *IPOpt) String() string {
- if *o.IP == nil {
- return ""
- }
- return o.IP.String()
- }
|