Skip to content

Commit a4b95b1

Browse files
committed
Add MANUAL proxy-arp mode with IPv4 range support to openconfig-if-ip
- Add ipv4-address-range typedef with pattern and posix-pattern - Add MANUAL enum to proxy-arp mode with selective ARP response semantics - Add manual-ip-ranges list under proxy-arp with config/state separation - Bump openconfig-if-ip version to 3.10.0
1 parent e32c9c8 commit a4b95b1

1 file changed

Lines changed: 106 additions & 2 deletions

File tree

release/models/interfaces/openconfig-if-ip.yang

Lines changed: 106 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,14 @@ module openconfig-if-ip {
4545
Section 4.c of the IETF Trust's Legal Provisions Relating
4646
to IETF Documents (http://trustee.ietf.org/license-info).";
4747

48-
oc-ext:openconfig-version "3.9.0";
48+
oc-ext:openconfig-version "3.10.0";
49+
50+
revision "2026-06-01" {
51+
description
52+
"Add ipv4-address-range typedef; manual-ip-range accepts CIDR
53+
prefix or start-end ip range.";
54+
reference "3.10.0";
55+
}
4956

5057
revision "2025-06-20" {
5158
description
@@ -1311,6 +1318,48 @@ revision "2023-06-30" {
13111318
}
13121319

13131320

1321+
typedef ipv4-address-range {
1322+
type string {
1323+
pattern
1324+
'(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.){3}'
1325+
+ '([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'
1326+
+ '(-'
1327+
+ '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.){3}'
1328+
+ '([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5]))?';
1329+
oc-ext:posix-pattern
1330+
'^(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.){3}'
1331+
+ '([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'
1332+
+ '(-(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.){3}'
1333+
+ '([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5]))?$';
1334+
}
1335+
description
1336+
"An IPv4 address or address range expressed in dotted-decimal notation.
1337+
A single address (e.g. 10.0.0.1) or a range of two addresses separated
1338+
by a hyphen without spaces: start-end (e.g. 10.0.0.1-10.0.0.5).
1339+
A single address is semantically equivalent to a range where the start
1340+
and end addresses are identical (e.g. 10.0.0.1 is equivalent to
1341+
10.0.0.1-10.0.0.1).
1342+
When a range is specified, the start address must be numerically less
1343+
than or equal to the end address; validation is enforced by the system.";
1344+
}
1345+
1346+
grouping ipv4-proxy-arp-manual-ip-range-config {
1347+
description
1348+
"Configuration parameters for a proxy ARP manual IPv4
1349+
ip-range entry.";
1350+
1351+
leaf ip-range {
1352+
type union {
1353+
type oc-inet:ipv4-prefix;
1354+
type ipv4-address-range;
1355+
}
1356+
description
1357+
"IPv4 ip-range: single IP (CIDR notation, e.g. 10.0.0.0/24) or
1358+
address range (start-end notation, e.g. 10.0.0.1-10.0.0.5)
1359+
for which proxy ARP replies are sent when mode is MANUAL.";
1360+
}
1361+
}
1362+
13141363
grouping ipv4-proxy-arp-config {
13151364
description
13161365
"Configuration parameters for IPv4 proxy ARP";
@@ -1335,6 +1384,14 @@ revision "2023-06-30" {
13351384
and target IP addresses are in different subnets, as well
13361385
as those where they are in the same subnet.";
13371386
}
1387+
enum MANUAL {
1388+
description
1389+
"Proxy ARP operating mode in which the system responds to
1390+
ARP requests only when the target IPv4 address matches an
1391+
explicitly configured entry in manual-ip-range. In this mode,
1392+
proxy ARP responses are selectively generated based on the ARP
1393+
target IP address.";
1394+
}
13381395
}
13391396
default "DISABLE";
13401397
description
@@ -1345,7 +1402,10 @@ revision "2023-06-30" {
13451402
value is specified, replies are only sent when the target address
13461403
falls outside the locally configured subnets on the interface,
13471404
whereas with the ALL value, all requests, regardless of their
1348-
target address are replied to.";
1405+
target address are replied to. If MANUAL is specified, replies
1406+
are only sent for target addresses matching entries in the
1407+
manual-ip-ranges list, or that match the IP address assigned to
1408+
the receiving interface.";
13491409
reference "RFC1027: Using ARP to Implement Transparent Subnet Gateways";
13501410
}
13511411
}
@@ -1471,6 +1531,50 @@ revision "2023-06-30" {
14711531
"Operational state parameters for proxy ARP";
14721532
uses ipv4-proxy-arp-config;
14731533
}
1534+
1535+
container manual-ip-ranges {
1536+
when "../config/mode = 'MANUAL'" {
1537+
description
1538+
"manual-ip-ranges is applicable only when proxy ARP mode
1539+
is MANUAL.";
1540+
}
1541+
description
1542+
"Collection of IPv4 prefixes or address ranges for which
1543+
proxy ARP replies are sent when mode is MANUAL.";
1544+
1545+
list manual-ip-range {
1546+
key "ip-range";
1547+
description
1548+
"A configured IPv4 ip-range entry for proxy ARP manual
1549+
mode.";
1550+
1551+
leaf ip-range {
1552+
type leafref {
1553+
path "../config/ip-range";
1554+
}
1555+
description
1556+
"IPv4 ip-range for which proxy ARP replies are sent
1557+
when mode is MANUAL.";
1558+
}
1559+
1560+
container config {
1561+
description
1562+
"Configuration parameters for a proxy ARP manual IPv4
1563+
ip-range entry.";
1564+
1565+
uses ipv4-proxy-arp-manual-ip-range-config;
1566+
}
1567+
1568+
container state {
1569+
config false;
1570+
description
1571+
"Operational state parameters for a proxy ARP manual
1572+
IPv4 ip-range entry.";
1573+
1574+
uses ipv4-proxy-arp-manual-ip-range-config;
1575+
}
1576+
}
1577+
}
14741578
}
14751579

14761580
container neighbors {

0 commit comments

Comments
 (0)