rfc9922v4.md   rfc9922.md 
skipping to change at line 1317 skipping to change at line 1317
are specified by the occurrences defined by both the are specified by the occurrences defined by both the
recurrence rule and 'period-timeticks' list. Duplicate recurrence rule and 'period-timeticks' list. Duplicate
instances are ignored."; instances are ignored.";
uses recurrence-utc; uses recurrence-utc;
list period-timeticks { list period-timeticks {
key "period-start"; key "period-start";
description description
"A list of periods with timeticks formats."; "A list of periods with timeticks formats.";
leaf period-start { leaf period-start {
type yang:timeticks; type yang:timeticks;
must "(not(derived-from(../../frequency," must "(not(derived-from-or-self(../../frequency,"
+ "'schedule:secondly')) or (current() < 100)) and " + "'schedule:secondly')) or (current() < 100)) and "
+ "(not(derived-from(../../frequency," + "(not(derived-from-or-self(../../frequency,"
+ "'schedule:minutely')) or (current() < 6000)) and " + "'schedule:minutely')) or (current() < 6000)) and "
+ "(not(derived-from(../../frequency,'schedule:hourly'))" + "(not(derived-from-or-self(../../frequency,"
+ " or (current() < 360000)) and " + "'schedule:hourly')) or (current() < 360000)) and "
+ "(not(derived-from(../../frequency,'schedule:daily'))" + "(not(derived-from-or-self(../../frequency,"
+ " or (current() < 8640000)) and " + "'schedule:daily')) or (current() < 8640000)) and "
+ "(not(derived-from(../../frequency,'schedule:weekly'))" + "(not(derived-from-or-self(../../frequency,"
+ " or (current() < 60480000)) and " + "'schedule:weekly')) or (current() < 60480000)) and "
+ "(not(derived-from(../../frequency," + "(not(derived-from-or-self(../../frequency,"
+ "'schedule:monthly')) or (current() < 267840000)) and " + "'schedule:monthly')) or (current() < 267840000)) and "
+ "(not(derived-from(../../frequency,'schedule:yearly'))" + "(not(derived-from-or-self(../../frequency,"
+ " or (current() < 3162240000))" { + "'schedule:yearly')) or (current() < 3162240000))" {
error-message error-message
"The 'period-start' must not exceed the frequency "The 'period-start' must not exceed the frequency
interval."; interval.";
} }
description description
"Start time of the schedule within one recurrence. "Start time of the schedule within one recurrence.
Given that the value is in timeticks format Given that the value is in timeticks format
(i.e., 1/100 of a second), the values in the must (i.e., 1/100 of a second), the values in the must
statement translate to 100 = 1 s (secondly), statement translate to 100 = 1 s (secondly),
skipping to change at line 1403 skipping to change at line 1403
range "0..23"; range "0..23";
} }
description description
"Specifies a list of hours of the day."; "Specifies a list of hours of the day.";
} }
list byday { list byday {
key "weekday"; key "weekday";
description description
"Specifies a list of days of the week."; "Specifies a list of days of the week.";
leaf-list direction { leaf-list direction {
when "derived-from(../../frequency, 'schedule:monthly') or " when "derived-from-or-self(../../frequency, "
+ "(derived-from(../../frequency, 'schedule:yearly') " + "'schedule:monthly') or "
+ " and not(../../byyearweek))"; + "(derived-from-or-self(../../frequency,"
+ "'schedule:yearly') and not(../../byyearweek))";
type int32 { type int32 {
range "-53..-1|1..53"; range "-53..-1|1..53";
} }
description description
"When specified, it indicates the nth occurrence of a "When specified, it indicates the nth occurrence of a
specific day within the monthly or yearly recurrence specific day within the monthly or yearly recurrence
rule. For example, within a monthly rule, +1 monday rule. For example, within a monthly rule, +1 monday
represents the first Monday within the month, whereas represents the first Monday within the month, whereas
-1 monday represents the last Monday of the month."; -1 monday represents the last Monday of the month.";
skipping to change at line 1438 skipping to change at line 1439
"Specifies a list of days of the month."; "Specifies a list of days of the month.";
} }
leaf-list byyearday { leaf-list byyearday {
type int32 { type int32 {
range "-366..-1|1..366"; range "-366..-1|1..366";
} }
description description
"Specifies a list of days of the year."; "Specifies a list of days of the year.";
} }
leaf-list byyearweek { leaf-list byyearweek {
when "derived-from(../frequency, 'schedule:yearly')"; when "derived-from-or-self(../frequency, 'schedule:yearly')";
type int32 { type int32 {
range "-53..-1|1..53"; range "-53..-1|1..53";
} }
description description
"Specifies a list of weeks of the year."; "Specifies a list of weeks of the year.";
} }
leaf-list byyearmonth { leaf-list byyearmonth {
type uint32 { type uint32 {
range "1..12"; range "1..12";
} }
skipping to change at line 2101 skipping to change at line 2102
## The "recurrence-with-time-zone" Grouping ## The "recurrence-with-time-zone" Grouping
{{ex-6}} indicates a recurrence of every 2 hours for 10 occurrences that {{ex-6}} indicates a recurrence of every 2 hours for 10 occurrences that
lasts 10 minutes and starts at 3 PM on December 1, 2025 in New York: lasts 10 minutes and starts at 3 PM on December 1, 2025 in New York:
~~~~ json ~~~~ json
{ {
"example-sch-usage-5:recurrence-with-time-zone": { "example-sch-usage-5:recurrence-with-time-zone": {
"recurrence-first": { "recurrence-first": {
"start-time": "2025-12-01T15:00:00", "start-time": "2025-12-01T15:00:00",
"duration": "PT00:10:00", "duration": "PT00:10:00"
"time-zone-identifier": "America/New_York"
}, },
"time-zone-identifier": "America/New_York",
"frequency": "ietf-schedule:hourly", "frequency": "ietf-schedule:hourly",
"interval": 2, "interval": 2,
"count": 10 "count": 10
} }
} }
~~~~ ~~~~
{: #ex-6 title="Simple Schedule with Recurrence with Time Zone Indication"} {: #ex-6 title="Simple Schedule with Recurrence with Time Zone Indication"}
## The "recurrence-utc-with-periods" Grouping ## The "recurrence-utc-with-periods" Grouping
skipping to change at line 2129 skipping to change at line 2130
{ {
"example-sch-usage-6:recurrence-utc-with-periods": { "example-sch-usage-6:recurrence-utc-with-periods": {
"recurrence-first": { "recurrence-first": {
"start-time-utc": "2025-06-01T09:00:00Z" "start-time-utc": "2025-06-01T09:00:00Z"
}, },
"frequency": "ietf-schedule:daily", "frequency": "ietf-schedule:daily",
"interval": 2, "interval": 2,
"utc-until": "2025-06-30T23:59:59Z", "utc-until": "2025-06-30T23:59:59Z",
"period-timeticks": [ "period-timeticks": [
{ {
"period-start": "3240000", "period-start": 3240000,
"period-end": "3420000" "period-end": 3420000
}, },
{ {
"period-start": "5400000", "period-start": 5400000,
"period-end": "5640000" "period-end": 5640000
} }
] ]
} }
} }
~~~~ ~~~~
{: #ex-7 title="Example of Recurrence With Date Times"} {: #ex-7 title="Example of Recurrence With Date Times"}
## The "recurrence-time-zone-with-periods" Grouping ## The "recurrence-time-zone-with-periods" Grouping
{{ex-8}} indicates a recurrence that occurs every {{ex-8}} indicates a recurrence that occurs every
30 minutes and lasts for 15 minutes from 9:00 AM to 5:00 PM and two extra occurren ces 30 minutes and lasts for 15 minutes from 9:00 AM to 5:00 PM and two extra occurren ces
at 6:00 PM and 6:30 PM with each lasting for 20 minutes on 2025-12-01 (New York): at 6:00 PM and 6:30 PM with each lasting for 20 minutes on 2025-12-01 (New York):
~~~~ json ~~~~ json
{ {
"example-sch-usage-7:recurrence-time-zone-with-periods": { "example-sch-usage-7:recurrence-time-zone-with-periods": {
"recurrence-first": { "recurrence-first": {
"start-time": "2025-12-01T09:00:00", "start-time": "2025-12-01T09:00:00",
"duration": "PT00:15:00", "duration": "PT00:15:00"
"time-zone-identifier": "America/New_York"
}, },
"time-zone-identifier": "America/New_York",
"frequency": "ietf-schedule:minutely", "frequency": "ietf-schedule:minutely",
"interval": 30, "interval": 30,
"until": "2025-12-01T17:00:00Z", "until": "2025-12-01T17:00:00Z",
"period": [ "period": [
{ {
"period-start": "2025-12-01T18:00:00", "period-start": "2025-12-01T18:00:00",
"duration": "PT00:20:00" "duration": "PT00:20:00"
}, },
{ {
"period-start": "2025-12-01T18:30:00", "period-start": "2025-12-01T18:30:00",
skipping to change at line 2183 skipping to change at line 2184
## The "icalendar-recurrence" Grouping ## The "icalendar-recurrence" Grouping
{{ex-9}} indicates 10 occurrences at {{ex-9}} indicates 10 occurrences at
8:00 AM (EST) every last Saturday of the month starting in January 2024: 8:00 AM (EST) every last Saturday of the month starting in January 2024:
~~~~ json ~~~~ json
{ {
"example-sch-usage-8:icalendar-recurrence": { "example-sch-usage-8:icalendar-recurrence": {
"recurrence-first": { "recurrence-first": {
"start-time": "2024-01-27T08:00:00", "start-time": "2024-01-27T08:00:00"
"time-zone-identifier": "America/New_York"
}, },
"time-zone-identifier": "America/New_York",
"frequency": "ietf-schedule:monthly", "frequency": "ietf-schedule:monthly",
"count": 10, "count": 10,
"byday": [ "byday": [
{ {
"direction": [ "direction": [
-1 -1
], ],
"weekday": "saturday" "weekday": "saturday"
} }
] ]
skipping to change at line 2208 skipping to change at line 2209
~~~~ ~~~~
{: #ex-9 title="Simple iCalendar Recurrence"} {: #ex-9 title="Simple iCalendar Recurrence"}
{{ex-10}} is an example of a recurrence that occurs on the last {{ex-10}} is an example of a recurrence that occurs on the last
workday of the month until December 25, 2025, starting January 1, 2025: workday of the month until December 25, 2025, starting January 1, 2025:
~~~~ json ~~~~ json
{ {
"example-sch-usage-8:icalendar-recurrence": { "example-sch-usage-8:icalendar-recurrence": {
"recurrence-first": { "recurrence-first": {
"start-time": "2025-01-01" "start-time": "2025-01-01T00:00:00"
}, },
"frequency": "ietf-schedule:monthly", "frequency": "ietf-schedule:monthly",
"until": "2025-12-25", "until": "2025-12-25T23:59:59",
"byday": [ "byday": [
{ {
"weekday": "monday" "weekday": "monday"
}, },
{ {
"weekday": "tuesday" "weekday": "tuesday"
}, },
{ {
"weekday": "wednesday" "weekday": "wednesday"
}, },
skipping to change at line 2284 skipping to change at line 2285
{{ex-12}} indicates the scheduled recurrence status of {{ex-11}} at the time {{ex-12}} indicates the scheduled recurrence status of {{ex-11}} at the time
of 12:15 PM on 2025-12-01 (UTC): of 12:15 PM on 2025-12-01 (UTC):
~~~~ json ~~~~ json
{ {
"example-sch-usage-1:schedule-status": { "example-sch-usage-1:schedule-status": {
"state": "ietf-schedule:enabled", "state": "ietf-schedule:enabled",
"version": 1, "version": 1,
"schedule-type": "ietf-schedule:recurrence", "schedule-type": "ietf-schedule:recurrence",
"counter": 9, "counter": 9,
"last-occurrence": [ "last-occurrence": "2025-12-01T12:00:00Z",
"2025-12-01T12:00:00Z" "upcoming-occurrence": "2025-12-01T12:20:00Z"
],
"upcoming-occurrence": [
"2025-12-01T12:20:00Z"
]
} }
} }
~~~~ ~~~~
{: #ex-12 title="Example of a Schedule Status"} {: #ex-12 title="Example of a Schedule Status"}
At the time of 12:15 PM on 2025-12-01 (UTC), the recurring event occurred at At the time of 12:15 PM on 2025-12-01 (UTC), the recurring event occurred at
(note that the occurrence at 10:20 AM is excluded): (note that the occurrence at 10:20 AM is excluded):
9:00, 9:20, 9:40, 10:00, 10:40, 11:00, 11:20, 11:40, and 12:00. 9:00, 9:20, 9:40, 10:00, 10:40, 11:00, 11:20, 11:40, and 12:00.
The last occurrence was at 12:00, and the upcoming one is at 12:20. The last occurrence was at 12:00, and the upcoming one is at 12:20.
skipping to change at line 2553 skipping to change at line 2550
~~~ xml ~~~ xml
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<link-attributes <link-attributes
xmlns="http://example.com/example-scheduled-link-bandwidth" xmlns="http://example.com/example-scheduled-link-bandwidth"
xmlns:schedule="urn:ietf:params:xml:ns:yang:ietf-schedule"> xmlns:schedule="urn:ietf:params:xml:ns:yang:ietf-schedule">
<link> <link>
<source-node>ne1</source-node> <source-node>ne1</source-node>
<destination-node>ne2</destination-node> <destination-node>ne2</destination-node>
<default-bandwidth>1000</default-bandwidth> <default-bandwidth>1000</default-bandwidth>
<recurrence-first> <recurrence-first>
<utc-start-time>2025-12-01T01:00:00Z</utc-start-time> <start-time-utc>2025-12-01T01:00:00Z</start-time-utc>
</recurrence-first> </recurrence-first>
<frequency>schedule:daily</frequency> <frequency>schedule:daily</frequency>
<utc-until>2025-12-31T23:59:59Z</utc-until> <utc-until>2025-12-31T23:59:59Z</utc-until>
<period-timeticks> <period-timeticks>
<period-start>360000</period-start> <period-start>360000</period-start>
<period-end>2160000</period-end> <period-end>2160000</period-end>
<scheduled-bandwidth>500</scheduled-bandwidth> <scheduled-bandwidth>500</scheduled-bandwidth>
</period-timeticks> </period-timeticks>
<period-timeticks> <period-timeticks>
<period-start>7920000</period-start> <period-start>7920000</period-start>
 End of changes. 18 change blocks. 
34 lines changed or deleted 31 lines changed or added

This html diff was produced by rfcdiff 1.48.