Documentation
¶
Overview ¶
パッケージnetipは、小さな値型であるIPアドレス型を定義します。 この[Addr]型をベースに、パッケージは AddrPort (IPアドレスとポート)と Prefix (IPアドレスとビット長のプレフィックス)も定義します。
net.IP 型と比較して、 Addr 型はメモリを少なく使用し、不変であり、比較可能(==およびマップキーとしてサポート)です。
Index ¶
- type Addr
- func AddrFrom16(addr [16]byte) Addr
- func AddrFrom4(addr [4]byte) Addr
- func AddrFromSlice(slice []byte) (ip Addr, ok bool)
- func IPv4Unspecified() Addr
- func IPv6LinkLocalAllNodes() Addr
- func IPv6LinkLocalAllRouters() Addr
- func IPv6Loopback() Addr
- func IPv6Unspecified() Addr
- func MustParseAddr(s string) Addr
- func ParseAddr(s string) (Addr, error)
- func (ip Addr) AppendTo(b []byte) []byte
- func (ip Addr) As16() (a16 [16]byte)
- func (ip Addr) As4() (a4 [4]byte)
- func (ip Addr) AsSlice() []byte
- func (ip Addr) BitLen() int
- func (ip Addr) Compare(ip2 Addr) int
- func (ip Addr) Is4() bool
- func (ip Addr) Is4In6() bool
- func (ip Addr) Is6() bool
- func (ip Addr) IsGlobalUnicast() bool
- func (ip Addr) IsInterfaceLocalMulticast() bool
- func (ip Addr) IsLinkLocalMulticast() bool
- func (ip Addr) IsLinkLocalUnicast() bool
- func (ip Addr) IsLoopback() bool
- func (ip Addr) IsMulticast() bool
- func (ip Addr) IsPrivate() bool
- func (ip Addr) IsUnspecified() bool
- func (ip Addr) IsValid() bool
- func (ip Addr) Less(ip2 Addr) bool
- func (ip Addr) MarshalBinary() ([]byte, error)
- func (ip Addr) MarshalText() ([]byte, error)
- func (ip Addr) Next() Addr
- func (ip Addr) Prefix(b int) (Prefix, error)
- func (ip Addr) Prev() Addr
- func (ip Addr) String() string
- func (ip Addr) StringExpanded() string
- func (ip Addr) Unmap() Addr
- func (ip *Addr) UnmarshalBinary(b []byte) error
- func (ip *Addr) UnmarshalText(text []byte) error
- func (ip Addr) WithZone(zone string) Addr
- func (ip Addr) Zone() string
- type AddrPort
- func (p AddrPort) Addr() Addr
- func (p AddrPort) AppendTo(b []byte) []byte
- func (p AddrPort) IsValid() bool
- func (p AddrPort) MarshalBinary() ([]byte, error)
- func (p AddrPort) MarshalText() ([]byte, error)
- func (p AddrPort) Port() uint16
- func (p AddrPort) String() string
- func (p *AddrPort) UnmarshalBinary(b []byte) error
- func (p *AddrPort) UnmarshalText(text []byte) error
- type Prefix
- func (p Prefix) Addr() Addr
- func (p Prefix) AppendTo(b []byte) []byte
- func (p Prefix) Bits() int
- func (p Prefix) Contains(ip Addr) bool
- func (p Prefix) IsSingleIP() bool
- func (p Prefix) IsValid() bool
- func (p Prefix) MarshalBinary() ([]byte, error)
- func (p Prefix) MarshalText() ([]byte, error)
- func (p Prefix) Masked() Prefix
- func (p Prefix) Overlaps(o Prefix) bool
- func (p Prefix) String() string
- func (p *Prefix) UnmarshalBinary(b []byte) error
- func (p *Prefix) UnmarshalText(text []byte) error
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Addr ¶
type Addr struct {
// contains filtered or unexported fields
}
Addrは、[net.IP]または[net.IPAddr]に似た、スコープ付きアドレスを持つIPv4またはIPv6アドレスを表します。
[net.IP]または[net.IPAddr]とは異なり、Addrは比較可能な値型であり(==をサポートし、マップキーとして使用可能)、不変です。
ゼロ値のAddrは有効なIPアドレスではありません。 Addr{}は、0.0.0.0と::の両方とは異なります。
func AddrFrom16 ¶
AddrFrom16は、addrのバイトで指定されたIPv6アドレスを返します。 IPv4マップされたIPv6アドレスはIPv6アドレスのままです。 (必要に応じて、Unmapを使用して変換してください。)
func AddrFromSlice ¶
AddrFromSliceは、4バイトまたは16バイトのバイトスライスをIPv4またはIPv6アドレスとして解析します。 net.IPは、[]byte引数として直接渡すことができます。 スライスの長さが4または16でない場合、Addr{}、falseを返します。
func IPv6LinkLocalAllNodes ¶
func IPv6LinkLocalAllNodes() Addr
IPv6LinkLocalAllNodesは、IPv6リンクローカル全ノードマルチキャストアドレスff02::1を返します。
func IPv6LinkLocalAllRouters ¶ added in v1.20.0
func IPv6LinkLocalAllRouters() Addr
IPv6LinkLocalAllRoutersは、IPv6リンクローカル全ルーターマルチキャストアドレスff02::2を返します。
func MustParseAddr ¶
/ MustParseAddrは、ParseAddr(s)を呼び出し、エラーが発生した場合にパニックを引き起こします。 ハードコードされた文字列を使用したテストで使用することを目的としています。
func ParseAddr ¶
ParseAddrは、sをIPアドレスとして解析し、その結果を返します。 文字列sは、ドット付き10進表記("192.0.2.1")、IPv6("2001:db8::68")、 またはスコープ付きアドレスゾーンを持つIPv6("fe80::1cc0:3e8c:119f:c2e1%ens18")のいずれかである必要があります。
func (Addr) As16 ¶
As16は、IPアドレスを16バイトの表現で返します。 IPv4アドレスはIPv4マップされたIPv6アドレスとして返されます。 ゾーンを持つIPv6アドレスは、ゾーンを除いた形式で返されます(ゾーンを取得するにはZoneメソッドを使用してください)。 ゼロのAddrの場合は、すべてのバイトがゼロの値を返します。
func (Addr) As4 ¶
As4は、IPv4またはIPv4-in-IPv6アドレスを4バイトの表現で返します。 ipがゼロのAddrまたはIPv6アドレスの場合、As4はパニックを引き起こします。 0.0.0.0はゼロのAddrではないことに注意してください。
func (Addr) BitLen ¶
BitLenは、IPアドレスのビット数を返します。 IPv6の場合は128、IPv4の場合は32、ゼロのAddrの場合は0です。
IPv4マップされたIPv6アドレスはIPv6アドレスと見なされるため、ビット長は128になります。
func (Addr) Compare ¶
Compareは、2つのIPを比較して整数を返します。 ip == ip2の場合、結果は0になります。 ip < ip2の場合、結果は-1になります。 ip > ip2の場合、結果は+1になります。 "less than"の定義は、Lessメソッドと同じです。
func (Addr) Is4 ¶
Is4は、ipがIPv4アドレスであるかどうかを報告します。
IPv4マップされたIPv6アドレスの場合、falseを返します。Addr.Unmapを参照してください。
func (Addr) IsGlobalUnicast ¶
IsGlobalUnicastは、ipがグローバルユニキャストアドレスであるかどうかを報告します。
リンクローカルアドレススペースを除く、現在のIANA割り当て2000::/3のグローバルユニキャストスペース外にあるIPv6アドレスに対してtrueを返します。 また、ipがIPv4プライベートアドレススペースまたはIPv6ユニークローカルアドレススペースにある場合でも、trueを返します。 ゼロのAddrの場合はfalseを返します。
func (Addr) IsInterfaceLocalMulticast ¶
IsInterfaceLocalMulticastは、ipがIPv6インターフェースローカルマルチキャストアドレスであるかどうかを報告します。
func (Addr) IsLinkLocalMulticast ¶
IsLinkLocalMulticastは、ipがリンクローカルマルチキャストアドレスであるかどうかを報告します。
func (Addr) IsLinkLocalUnicast ¶
IsLinkLocalUnicastは、ipがリンクローカルユニキャストアドレスであるかどうかを報告します。
func (Addr) IsMulticast ¶
IsMulticastは、ipがマルチキャストアドレスであるかどうかを報告します。
func (Addr) IsPrivate ¶
IsPrivateは、RFC 1918(IPv4アドレス)およびRFC 4193(IPv6アドレス)に従って、 ipがプライベートアドレスであるかどうかを報告します。 つまり、ipが10.0.0.0/8、172.16.0.0/12、192.168.0.0/16、またはfc00::/7のいずれかであるかどうかを報告します。 これは、net.IP.IsPrivateと同じです。
func (Addr) IsUnspecified ¶
IsUnspecifiedは、ipが未指定のアドレスであるかどうかを報告します。 IPv4アドレス"0.0.0.0"またはIPv6アドレス"::"のいずれかです。
ただし、ゼロのAddrは未指定のアドレスではありません。
func (Addr) IsValid ¶
IsValidは、Addrが初期化されたアドレス(ゼロのAddrではない)であるかどうかを報告します。
"0.0.0.0"と"::"の両方が有効な値であることに注意してください。
func (Addr) Less ¶
Lessは、ipがip2よりも前にソートされるかどうかを報告します。 IPアドレスは、まず長さでソートされ、次にアドレスでソートされます。 ゾーンを持つIPv6アドレスは、ゾーンのない同じアドレスの直後にソートされます。
func (Addr) MarshalBinary ¶
MarshalBinaryは、encoding.BinaryMarshalerインターフェースを実装します。 ゼロのAddrの場合は長さ0のスライスを返し、IPv4アドレスの場合は4バイトの形式を、 IPv6アドレスの場合はゾーンを追加した16バイトの形式を返します。
func (Addr) MarshalText ¶
MarshalTextは、encoding.TextMarshalerインターフェースを実装します。 エンコーディングは、Stringが返すものと同じですが、1つの例外があります。 ipがゼロのAddrの場合、エンコーディングは空の文字列になります。
func (Addr) Prefix ¶
Prefixは、IPの上位bビットのみを保持し、指定された長さのPrefixを生成します。 ipがゼロのAddrの場合、Prefixは常にゼロのPrefixとnilエラーを返します。 それ以外の場合、bitsが負の場合またはip.BitLen()より大きい場合、Prefixはエラーを返します。
func (Addr) String ¶
Stringは、IPアドレスipの文字列形式を返します。 返される形式は、次の5つのいずれかです。
- ゼロのAddrの場合は "invalid IP"
- IPv4ドット付き10進数表記 ("192.0.2.1")
- IPv6表記 ("2001:db8::1")
- Is4In6の場合は "::ffff:1.2.3.4"
- ゾーンを持つIPv6表記 ("fe80:db8::1%eth0")
注意:パッケージnetのIP.Stringメソッドとは異なり、 IPv4マップされたIPv6アドレスは、ドット区切りの4つ組の前に"::ffff:"の接頭辞が付きます。
func (Addr) StringExpanded ¶
StringExpandedは、Stringと同様ですが、IPv6アドレスは先頭にゼロを付けて"::"の圧縮を行わずに展開されます。 たとえば、"2001:db8::1"は"2001:0db8:0000:0000:0000:0000:0000:0001"になります。
func (Addr) Unmap ¶
Unmapは、IPv4マップされたIPv6アドレスのプレフィックスを削除したipを返します。
つまり、ipがIPv4アドレスをラップしたIPv6アドレスである場合、 ラップされたIPv4アドレスを返します。それ以外の場合は、ipを変更せずに返します。
func (*Addr) UnmarshalBinary ¶
UnmarshalBinaryは、encoding.BinaryUnmarshalerインターフェースを実装します。 MarshalBinaryによって生成された形式のデータを想定しています。
func (*Addr) UnmarshalText ¶
UnmarshalTextは、encoding.TextUnmarshalerインターフェースを実装します。 IPアドレスは、ParseAddrで受け入れられる形式で指定する必要があります。
textが空の場合、UnmarshalTextは*ipをゼロのAddrに設定し、エラーを返しません。
type AddrPort ¶
type AddrPort struct {
// contains filtered or unexported fields
}
AddrPortは、IPアドレスとポート番号です。
func AddrPortFrom ¶
AddrPortFromは、提供されたIPとポート番号でAddrPortを返します。 アロケーションは行いません。
func MustParseAddrPort ¶
MustParseAddrPortは、ParseAddrPort(s)を呼び出し、エラーが発生した場合にパニックを引き起こします。 テストでハードコードされた文字列を使用するために使用することを意図しています。
func (AddrPort) MarshalBinary ¶
MarshalBinaryは、encoding.BinaryMarshalerインターフェースを実装します。 これは、Addr.MarshalBinaryに、リトルエンディアンで表されたポートを追加したものを返します。
func (AddrPort) MarshalText ¶
MarshalTextは、encoding.TextMarshalerインターフェースを実装します。 エンコーディングは、Stringが返すものと同じですが、1つの例外があります。 p.Addr()がゼロのAddrの場合、エンコーディングは空の文字列になります。
func (*AddrPort) UnmarshalBinary ¶
UnmarshalBinaryは、encoding.BinaryUnmarshalerインターフェースを実装します。 これは、MarshalBinaryによって生成された形式のデータを想定しています。
func (*AddrPort) UnmarshalText ¶
UnmarshalTextは、encoding.TextUnmarshalerインターフェースを実装します。 AddrPortは、MarshalTextによって生成された形式のデータ、またはParseAddrPortで受け入れられる形式で指定する必要があります。
type Prefix ¶
type Prefix struct {
// contains filtered or unexported fields
}
Prefixは、IPネットワークを表すIPアドレスプレフィックス(CIDR)です。
Addr()の最初のBits()が指定されます。残りのビットは任意のアドレスに一致します。 Bits()の範囲は、IPv4の場合は[0,32]、IPv6の場合は[0,128]です。
func MustParsePrefix ¶
MustParsePrefixは、ParsePrefix(s)を呼び出し、エラーが発生した場合にパニックを引き起こします。 テストでハードコードされた文字列を使用するために使用することを意図しています。
func ParsePrefix ¶
ParsePrefixは、sをIPアドレスプレフィックスとして解析します。 文字列は、RFC 4632およびRFC 4291で定義されたCIDR表記法である場合があります。 たとえば、"192.168.1.0/24"または"2001:db8::/32"の形式です。 IPv6ゾーンはプレフィックスでは許可されておらず、ゾーンが存在する場合はエラーが返されます。
マスクされたアドレスビットはゼロになりません。そのため、Maskedを使用してください。
func PrefixFrom ¶
PrefixFromは、指定されたIPアドレスとビットプレフィックス長でPrefixを返します。
アロケーションは行いません。Addr.Prefixとは異なり、PrefixFromはipのホストビットをマスクしません。
bitsが負の場合またはip.BitLenより大きい場合、Prefix.Bitsは無効な値-1を返します。
func (Prefix) Contains ¶
Containsは、ネットワークpがipを含むかどうかを報告します。
IPv4アドレスはIPv6プレフィックスに一致しません。 IPv4マップされたIPv6アドレスはIPv4プレフィックスに一致しません。 ゼロ値のIPはどのプレフィックスにも一致しません。 ipがIPv6ゾーンを持つ場合、Prefixesはゾーンを削除するため、Containsはfalseを返します。
func (Prefix) IsValid ¶
IsValidは、p.Addr()に対してp.Bits()が有効な範囲であるかどうかを報告します。 p.Addr()がゼロのAddrの場合、IsValidはfalseを返します。 pがゼロのPrefixの場合、p.IsValid() == falseになることに注意してください。
func (Prefix) MarshalBinary ¶
MarshalBinaryは、encoding.BinaryMarshalerインターフェースを実装します。 これは、Addr.MarshalBinaryに、プレフィックスビットを表す追加のバイトを追加したものを返します。
func (Prefix) MarshalText ¶
MarshalTextは、encoding.TextMarshalerインターフェースを実装します。 エンコーディングは、Stringが返すものと同じですが、1つの例外があります。 pがゼロ値の場合、エンコーディングは空の文字列になります。
func (Prefix) Masked ¶
Maskedは、pを正規形式で返します。p.Addr()の高位p.Bits()ビット以外はすべてマスクされます。
pがゼロまたは無効な場合、MaskedはゼロのPrefixを返します。
func (Prefix) Overlaps ¶
Overlapsは、pとoが共通のIPアドレスを含むかどうかを報告します。
pとoが異なるアドレスファミリであるか、どちらかがゼロのIPである場合、falseを報告します。 Containsメソッドと同様に、IPv4マップされたIPv6アドレスを持つプレフィックスは、IPv6マスクとして扱われます。
func (*Prefix) UnmarshalBinary ¶
UnmarshalBinaryは、encoding.BinaryUnmarshalerインターフェースを実装します。 これは、MarshalBinaryによって生成された形式のデータを想定しています。
func (*Prefix) UnmarshalText ¶
UnmarshalTextは、encoding.TextUnmarshalerインターフェースを実装します。 IPアドレスは、ParsePrefixで受け入れられる形式で指定する必要があります。 または、MarshalTextによって生成された形式である必要があります。