| rfc9922v4.txt | rfc9922.txt | |||
|---|---|---|---|---|
| skipping to change at line 1448 ¶ | skipping to change at line 1448 ¶ | |||
| 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 1534 ¶ | skipping to change at line 1534 ¶ | |||
| 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 1569 ¶ | skipping to change at line 1570 ¶ | |||
| "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 2354 ¶ | skipping to change at line 2355 ¶ | |||
| A.5. The "recurrence-with-time-zone" Grouping | A.5. The "recurrence-with-time-zone" Grouping | |||
| Figure 17 indicates a recurrence of every 2 hours for 10 occurrences | Figure 17 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 | that lasts 10 minutes and starts at 3 PM on December 1, 2025 in New | |||
| York: | York: | |||
| { | { | |||
| "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 | |||
| } | } | |||
| } | } | |||
| Figure 17: Simple Schedule with Recurrence with Time Zone Indication | Figure 17: Simple Schedule with Recurrence with Time Zone Indication | |||
| A.6. The "recurrence-utc-with-periods" Grouping | A.6. The "recurrence-utc-with-periods" Grouping | |||
| skipping to change at line 2381 ¶ | skipping to change at line 2382 ¶ | |||
| { | { | |||
| "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 | |||
| } | } | |||
| ] | ] | |||
| } | } | |||
| } | } | |||
| Figure 18: Example of Recurrence With Date Times | Figure 18: Example of Recurrence With Date Times | |||
| A.7. The "recurrence-time-zone-with-periods" Grouping | A.7. The "recurrence-time-zone-with-periods" Grouping | |||
| Figure 19 indicates a recurrence that occurs every 30 minutes and | Figure 19 indicates a recurrence that occurs every 30 minutes and | |||
| lasts for 15 minutes from 9:00 AM to 5:00 PM and two extra | lasts for 15 minutes from 9:00 AM to 5:00 PM and two extra | |||
| occurrences at 6:00 PM and 6:30 PM with each lasting for 20 minutes | occurrences at 6:00 PM and 6:30 PM with each lasting for 20 minutes | |||
| on 2025-12-01 (New York): | on 2025-12-01 (New York): | |||
| { | { | |||
| "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 2434 ¶ | skipping to change at line 2435 ¶ | |||
| Figure 19: Example of Advanced Recurrence Schedule | Figure 19: Example of Advanced Recurrence Schedule | |||
| A.8. The "icalendar-recurrence" Grouping | A.8. The "icalendar-recurrence" Grouping | |||
| Figure 20 indicates 10 occurrences at 8:00 AM (EST) every last | Figure 20 indicates 10 occurrences at 8:00 AM (EST) every last | |||
| Saturday of the month starting in January 2024: | Saturday of the month starting in January 2024: | |||
| { | { | |||
| "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 2459 ¶ | skipping to change at line 2460 ¶ | |||
| Figure 20: Simple iCalendar Recurrence | Figure 20: Simple iCalendar Recurrence | |||
| Figure 21 is an example of a recurrence that occurs on the last | Figure 21 is an example of a recurrence that occurs on the last | |||
| workday of the month until December 25, 2025, starting January 1, | workday of the month until December 25, 2025, starting January 1, | |||
| 2025: | 2025: | |||
| { | { | |||
| "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 2533 ¶ | skipping to change at line 2534 ¶ | |||
| Figure 23 indicates the scheduled recurrence status of Figure 22 at | Figure 23 indicates the scheduled recurrence status of Figure 22 at | |||
| the time of 12:15 PM on 2025-12-01 (UTC): | the time of 12:15 PM on 2025-12-01 (UTC): | |||
| { | { | |||
| "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" | ||||
| ] | ||||
| } | } | |||
| } | } | |||
| Figure 23: Example of a Schedule Status | Figure 23: Example of a Schedule Status | |||
| At the time of 12:15 PM on 2025-12-01 (UTC), the recurring event | 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): 9:00, | occurred at (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. The last | 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. | occurrence was at 12:00, and the upcoming one is at 12:20. | |||
| skipping to change at line 2801 ¶ | skipping to change at line 2798 ¶ | |||
| <?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. | ||||