From fca2486e1bc26f68b65247eae58ce5269aca6c95 Mon Sep 17 00:00:00 2001 From: Michael Welzl Date: Wed, 7 Jun 2023 17:55:21 +0200 Subject: [PATCH 1/5] Added basic types: string, IPv4 address, IPv6 address. Closes #1183. --- draft-ietf-taps-interface.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/draft-ietf-taps-interface.md b/draft-ietf-taps-interface.md index 1e4d5c46..911046e2 100644 --- a/draft-ietf-taps-interface.md +++ b/draft-ietf-taps-interface.md @@ -222,6 +222,9 @@ We also make use of the following basic types: elements in a sequence of the given Type. An array may be of fixed or variable length. - Collection: An unordered grouping of one or more values of the same type. +- String: An alphanumeric string. +- IPv4Address: An IPv4 address. +- IPv6Address: An IPv6 address. For guidance on how these abstract concepts may be implemented in languages in accordance with native design patterns and language and platform features, From 81e10f165fe9ceac72f89d27f12634151ff95d02 Mon Sep 17 00:00:00 2001 From: Michael Welzl Date: Fri, 23 Jun 2023 21:05:33 +0200 Subject: [PATCH 2/5] addressing comments by @philsbln - strings more general, moved it all up, and "just" IP addresses. --- draft-ietf-taps-interface.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/draft-ietf-taps-interface.md b/draft-ietf-taps-interface.md index 911046e2..06756d49 100644 --- a/draft-ietf-taps-interface.md +++ b/draft-ietf-taps-interface.md @@ -212,6 +212,9 @@ We also make use of the following basic types: - Boolean: Instances take the value `true` or `false`. - Integer: Instances take positive or negative integer values. - Numeric: Instances take positive or negative real number values. +- String: A string (represented in a way that is common to the programming + language, e.g. unicode). +- IP Address: An IPv4 or IPv6 address. - Enumeration: A family of types in which each instance takes one of a fixed, predefined set of values specific to a given enumerated type. - Tuple: An ordered grouping of multiple value types, represented as a @@ -222,9 +225,6 @@ We also make use of the following basic types: elements in a sequence of the given Type. An array may be of fixed or variable length. - Collection: An unordered grouping of one or more values of the same type. -- String: An alphanumeric string. -- IPv4Address: An IPv4 address. -- IPv6Address: An IPv6 address. For guidance on how these abstract concepts may be implemented in languages in accordance with native design patterns and language and platform features, From 55400d4ea3840ee98e034ae29d26c9721efc2285 Mon Sep 17 00:00:00 2001 From: Michael Welzl Date: Fri, 23 Jun 2023 21:07:21 +0200 Subject: [PATCH 3/5] avoiding a recursive definition --- draft-ietf-taps-interface.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/draft-ietf-taps-interface.md b/draft-ietf-taps-interface.md index 06756d49..b48c7c26 100644 --- a/draft-ietf-taps-interface.md +++ b/draft-ietf-taps-interface.md @@ -212,8 +212,8 @@ We also make use of the following basic types: - Boolean: Instances take the value `true` or `false`. - Integer: Instances take positive or negative integer values. - Numeric: Instances take positive or negative real number values. -- String: A string (represented in a way that is common to the programming - language, e.g. unicode). +- String: Instances are represented in a way that is common to the programming + language, e.g. unicode. - IP Address: An IPv4 or IPv6 address. - Enumeration: A family of types in which each instance takes one of a fixed, predefined set of values specific to a given enumerated type. From 405b97cb25903a418d4db7d56ce77b7b25774899 Mon Sep 17 00:00:00 2001 From: mwelzl Date: Sat, 24 Jun 2023 06:21:34 +0200 Subject: [PATCH 4/5] Update draft-ietf-taps-interface.md Co-authored-by: Tommy Pauly --- draft-ietf-taps-interface.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/draft-ietf-taps-interface.md b/draft-ietf-taps-interface.md index b48c7c26..aee2886e 100644 --- a/draft-ietf-taps-interface.md +++ b/draft-ietf-taps-interface.md @@ -213,7 +213,7 @@ We also make use of the following basic types: - Integer: Instances take positive or negative integer values. - Numeric: Instances take positive or negative real number values. - String: Instances are represented in a way that is common to the programming - language, e.g. unicode. + language, e.g. UTF-8. - IP Address: An IPv4 or IPv6 address. - Enumeration: A family of types in which each instance takes one of a fixed, predefined set of values specific to a given enumerated type. From 31da7c2c7545286250f15dfa303fa98eeb1f8cfe Mon Sep 17 00:00:00 2001 From: "Philipp S. Tiesel" Date: Mon, 26 Jun 2023 09:41:30 +0200 Subject: [PATCH 5/5] Update draft-ietf-taps-interface.md --- draft-ietf-taps-interface.md | 39 ++++++++++++++++-------------------- 1 file changed, 17 insertions(+), 22 deletions(-) diff --git a/draft-ietf-taps-interface.md b/draft-ietf-taps-interface.md index aee2886e..13025f12 100644 --- a/draft-ietf-taps-interface.md +++ b/draft-ietf-taps-interface.md @@ -705,11 +705,11 @@ RemoteSpecifier.WithService("https") - IP address (IPv4 or IPv6 address): ~~~ -RemoteSpecifier.WithIPv4Address(192.0.2.21) +RemoteSpecifier.WithIPAddress(192.0.2.21) ~~~ ~~~ -RemoteSpecifier.WithIPv6Address(2001:db8:4920:e29d:a420:7461:7073:0a) +RemoteSpecifier.WithIPAddress(2001:db8:4920:e29d:a420:7461:7073:0a) ~~~ - Interface name (string), e.g., to qualify link-local or multicast addresses (see {{ifspec}} for details): @@ -719,7 +719,7 @@ LocalSpecifier.WithInterface("en0") ~~~ Note that an IPv6 address specified with a scope (e.g. `2001:db8:4920:e29d:a420:7461:7073:0a%en0`) -is equivalent to `WithIPv6Address` with an unscoped address and `WithInterface ` together. +is equivalent to `WithIPAddress` with an unscoped address and `WithInterface ` together. The design of the API MUST NOT permit an Endpoint to be configured with multiple identifiers of the same type. For example, an endpoint cannot have two IP addresses specified. Two separate IP addresses @@ -755,8 +755,7 @@ multicast group. The following API calls can be used to configure a Preconnection before calling Initiate(): ~~~ -RemoteSpecifier.WithMulticastGroupIPv4(GroupAddress) -RemoteSpecifier.WithMulticastGroupIPv6(GroupAddress) +RemoteSpecifier.WithMulticastGroupIP(GroupAddress) RemoteSpecifier.WithPort(PortNumber) RemoteSpecifier.WithTTL(TTL) ~~~ @@ -771,10 +770,8 @@ The receiving interface can be restricted by passing it as part of the LocalSpec The following API calls can be used to configure a Preconnection before calling Listen(): ~~~ -LocalSpecifier.WithSingleSourceMulticastGroupIPv4(GroupAddress, SourceAddress) -LocalSpecifier.WithSingleSourceMulticastGroupIPv6(GroupAddress, SourceAddress) -LocalSpecifier.WithAnySourceMulticastGroupIPv4(GroupAddress) -LocalSpecifier.WithAnySourceMulticastGroupIPv6(GroupAddress) +LocalSpecifier.WithSingleSourceMulticastGroupIP(GroupAddress, SourceAddress) +LocalSpecifier.WithAnySourceMulticastGroupIP(GroupAddress) LocalSpecifier.WithPort(PortNumber) ~~~ @@ -792,12 +789,10 @@ group address as the Local Endpoint results in an EstablishmentError. The following API calls can be used to configure a Preconnection before calling Rendezvous(): ~~~ -RemoteSpecifier.WithMulticastGroupIPv4(GroupAddress) -RemoteSpecifier.WithMulticastGroupIPv6(GroupAddress) +RemoteSpecifier.WithMulticastGroupIP(GroupAddress) RemoteSpecifier.WithPort(PortNumber) RemoteSpecifier.WithTTL(TTL) -LocalSpecifier.WithAnySourceMulticastGroupIPv4(GroupAddress) -LocalSpecifier.WithAnySourceMulticastGroupIPv6(GroupAddress) +LocalSpecifier.WithAnySourceMulticastGroupIP(GroupAddress) LocalSpecifier.WithPort(PortNumber) LocalSpecifier.WithTTL(TTL) ~~~ @@ -866,7 +861,7 @@ Specify a Remote Endpoint using an IPv6 address and remote port: ~~~ RemoteSpecifier := NewRemoteEndpoint() -RemoteSpecifier.WithIPv6Address(2001:db8:4920:e29d:a420:7461:7073:0a) +RemoteSpecifier.WithIPAddress(2001:db8:4920:e29d:a420:7461:7073:0a) RemoteSpecifier.WithPort(443) ~~~ @@ -874,7 +869,7 @@ Specify a Remote Endpoint using an IPv4 address and remote port: ~~~ RemoteSpecifier := NewRemoteEndpoint() -RemoteSpecifier.WithIPv4Address(192.0.2.21) +RemoteSpecifier.WithIPAddress(192.0.2.21) RemoteSpecifier.WithPort(443) ~~~ @@ -910,7 +905,7 @@ port on a named local interface: RemoteSpecifier := NewRemoteEndpoint() LocalSpecifier := NewLocalEndpoint() - LocalSpecifier.WithAnySourceMulticastGroupIPv4(233.252.0.0) + LocalSpecifier.WithAnySourceMulticastGroupIP(233.252.0.0) LocalSpecifier.WithPort(5353) LocalSpecifier.WithInterface("en0") @@ -931,7 +926,7 @@ port on a named local interface: RemoteSpecifier := NewRemoteEndpoint() LocalSpecifier := NewLocalEndpoint() - LocalSpecifier.WithSingleSourceMulticastGroupIPv4(233.252.0.0, 198.51.100.10) + LocalSpecifier.WithSingleSourceMulticastGroupIP(233.252.0.0, 198.51.100.10) LocalSpecifier.WithPort(5353) LocalSpecifier.WithInterface("en0") @@ -949,12 +944,12 @@ Create a Source-Specific Multicast group as a sender: ~~~ RemoteSpecifier := NewRemoteEndpoint() - RemoteSpecifier.WithMulticastGroupIPv4(232.1.1.1) + RemoteSpecifier.WithMulticastGroupIP(232.1.1.1) RemoteSpecifier.WithPort(5353) RemoteSpecifier.WithTTL(8) LocalSpecifier := NewLocalEndpoint() - LocalSpecifier.WithIPv4Address(192.0.2.22) + LocalSpecifier.WithIPAddress(192.0.2.22) LocalSpecifier.WithInterface("en0") TransportProperties := ... @@ -971,13 +966,13 @@ Join an any-source multicast group as both a sender and a receiver: ~~~ RemoteSpecifier := NewRemoteEndpoint() - RemoteSpecifier.WithMulticastGroupIPv4(233.252.0.0) + RemoteSpecifier.WithMulticastGroupIP(233.252.0.0) RemoteSpecifier.WithPort(5353) RemoteSpecifier.WithTTL(8) LocalSpecifier := NewLocalEndpoint() - LocalSpecifier.WithAnySourceMulticastGroupIPv4(233.252.0.0) - LocalSpecifier.WithIPv4Address(192.0.2.22) + LocalSpecifier.WithAnySourceMulticastGroupIP(233.252.0.0) + LocalSpecifier.WithIPAddress(192.0.2.22) LocalSpecifier.WithPort(5353) LocalSpecifier.WithInterface("en0")