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) Compare(p2 AddrPort) int
- 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) AppendTo ¶
AppendToは、Addr.MarshalText によって生成されたipのテキストエンコーディングをbに追加し、拡張されたバッファを返します。
func (Addr) As16 ¶
As16は、IPアドレスを16バイトの表現で返します。 IPv4アドレスはIPv4マップされたIPv6アドレスとして返されます。 ゾーンを持つIPv6アドレスは、ゾーンを除いた形式で返されます(ゾーンを取得するには Addr.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"の定義は、Addr.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 インターフェースを実装します。 エンコーディングは、Addr.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")
- Addr.Is4In6 の場合は "::ffff:1.2.3.4"
- ゾーンを持つIPv6表記 ("fe80:db8::1%eth0")
注意:パッケージnetのIP.Stringメソッドとは異なり、 IPv4マップされたIPv6アドレスは、ドット区切りの4つ組の前に"::ffff:"の接頭辞が付きます。
func (Addr) StringExpanded ¶
StringExpandedは、Addr.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) AppendTo ¶
AppendToは、AddrPort.MarshalText によって生成されたpのテキストエンコーディングをbに追加し、拡張されたバッファを返します。
func (AddrPort) Compare ¶ added in v1.22.0
Compare returns an integer comparing two AddrPorts. The result will be 0 if p == p2, -1 if p < p2, and +1 if p > p2. AddrPorts sort first by IP address, then port.
func (AddrPort) MarshalBinary ¶
MarshalBinaryは、encoding.BinaryMarshaler インターフェースを実装します。 これは、Addr.MarshalBinary に、リトルエンディアンで表されたポートを追加したものを返します。
func (AddrPort) MarshalText ¶
MarshalTextは、encoding.TextMarshaler インターフェースを実装します。 エンコーディングは、AddrPort.String が返すものと同じですが、1つの例外があります。 p.Addr()がゼロの Addr の場合、エンコーディングは空の文字列になります。
func (*AddrPort) UnmarshalBinary ¶
UnmarshalBinaryは、encoding.BinaryUnmarshaler インターフェースを実装します。 これは、AddrPort.MarshalBinary によって生成された形式のデータを想定しています。
func (*AddrPort) UnmarshalText ¶
UnmarshalTextは、encoding.TextUnmarshalerインターフェースを実装します。 AddrPort は、AddrPort.MarshalText によって生成された形式のデータ、または ParseAddrPort で受け入れられる形式で指定する必要があります。
type Prefix ¶
type Prefix struct {
// contains filtered or unexported fields
}
Prefixは、IPネットワークを表すIPアドレスプレフィックス(CIDR)です。
Addr()の最初の Prefix.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) AppendTo ¶
AppendToは、Prefix.MarshalText によって生成されたpのテキストエンコーディングをbに追加し、拡張されたバッファを返します。
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 インターフェースを実装します。 エンコーディングは、Prefix.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 インターフェースを実装します。 これは、Prefix.MarshalBinary によって生成された形式のデータを想定しています。
func (*Prefix) UnmarshalText ¶
UnmarshalTextは、encoding.TextUnmarshalerインターフェースを実装します。 IPアドレスは、[ParsePrefix]で受け入れられる形式で指定する必要があります。 または、Prefix.MarshalText によって生成された形式である必要があります。