3 namespace "urn:opendaylight:params:xml:ns:yang:ovsdb";
6 import network-topology {prefix "topo"; revision-date "2013-10-21"; }
7 import yang-ext { prefix "ext"; }
8 import ietf-inet-types { prefix inet; revision-date 2010-09-24; }
9 import overlay { prefix overlay; }
10 import ietf-yang-types { prefix yang; revision-date "2013-07-15";}
11 import opendaylight-l2-types { prefix ethertype; revision-date "2013-08-27";}
13 revision "2015-01-05" {
14 description "Initial revision of southbound model";
17 typedef ovsdb-termination-point-ref {
18 description "A reference to an ovsdb termination point";
19 type instance-identifier;
22 typedef ovsdb-bridge-ref {
23 description "A reference to an ovsdb bridge";
24 type instance-identifier;
27 typedef ovsdb-node-ref {
28 description "A reference to an ovsdb node";
29 type instance-identifier;
32 typedef flow-node-ref {
33 description "A reference to a flow node";
34 type instance-identifier;
37 typedef ovsdb-bridge-name {
44 '[0-9a-fA-F]{2}(:[0-9a-fA-F]{2}){7}';
47 "The datapath-d type represents OpenFlow datapath-id .
48 The canonical representation uses lowercase characters.
50 In the value set and its semantics, this type is similar
51 to the MacAddress textual convention of the SMIv2, but with
55 IEEE 802: IEEE Standard for Local and Metropolitan Area
56 Networks: Overview and Architecture
57 RFC 2579: Textual Conventions for SMIv2";
60 identity datapath-type-base {
61 description "Base identity for all OVSDB datapath types";
64 identity datapath-type-system {
65 description "Datapath type for the kernel datapath";
66 base datapath-type-base;
69 identity datapath-type-netdev {
70 description "Datapath type for the userspace datapath";
71 base datapath-type-base;
74 identity ovsdb-bridge-protocol-base {
75 description "Base identity for all ovsdb-bridge-protocols";
78 identity ovsdb-bridge-protocol-openflow-10 {
79 description "Ovsdb bridge protocol OpenFlow 1.0";
80 base ovsdb-bridge-protocol-base;
83 identity ovsdb-bridge-protocol-openflow-11 {
84 description "Ovsdb bridge protocol OpenFlow 1.1";
85 base ovsdb-bridge-protocol-base;
88 identity ovsdb-bridge-protocol-openflow-12 {
89 description "Ovsdb bridge protocol OpenFlow 1.2";
90 base ovsdb-bridge-protocol-base;
93 identity ovsdb-bridge-protocol-openflow-13 {
94 description "Ovsdb bridge protocol OpenFlow 1.3";
95 base ovsdb-bridge-protocol-base;
98 identity ovsdb-bridge-protocol-openflow-14 {
99 description "Ovsdb bridge protocol OpenFlow 1.4";
100 base ovsdb-bridge-protocol-base;
103 identity ovsdb-bridge-protocol-openflow-15 {
104 description "Ovsdb bridge protocol OpenFlow 1.5";
105 base ovsdb-bridge-protocol-base;
108 identity ovsdb-fail-mode-base {
109 description "Base identity for ovsdb-failmode";
112 identity ovsdb-fail-mode-standalone {
113 description "Identity for ovsdb-failmode standalone";
114 base ovsdb-fail-mode-base;
117 identity ovsdb-fail-mode-secure {
118 description "Identity for ovsdb-failmode standalone";
119 base ovsdb-fail-mode-base;
122 grouping ovsdb-bridge-attributes {
124 description "The unique identifier of the bridge";
127 leaf bridge-openflow-node-ref {
128 description "A reference to the openflow node";
129 type instance-identifier;
133 description "The name of the bridge";
134 type ovsdb-bridge-name;
136 list protocol-entry {
139 description "Protocol bridge should seek to speak to its controller";
141 base ovsdb-bridge-protocol-base;
146 list controller-entry {
147 description "Bridge controller info";
150 description "Uri telling bridge how to connect to controller";
153 leaf controller-uuid {
154 description "The unique identifier of the controller";
164 description "Datapath-id of the bridge";
169 description "The datapath type of the bridge";
171 base datapath-type-base;
176 description "Failmode of the bridge";
178 base ovsdb-fail-mode-base;
183 description "Flow node corresponding to this bridge";
188 description "The OVSDB which this bridge belongs to";
192 list bridge-external-ids {
194 "Key-value pairs for use by external frameworks that integrate
197 external_ids : bridge-id: optional string
199 A unique identifier of the bridge. On Citrix XenServer this
200 will commonly be the same as external_ids:xs-network-uuids.
202 external_ids : xs-network-uuids: optional string
204 Semicolon-delimited set of universally unique identifier(s)
205 for the network with which this bridge is associated on a
206 Citrix XenServer host. The network identifiers are RFC 4122
207 UUIDs as displayed by, e.g., xe network−list.";
209 key "bridge-external-id-key";
210 leaf bridge-external-id-key {
211 description "external-id name/key";
215 leaf bridge-external-id-value {
216 description "bridge-external-id value";
222 list bridge-other-configs {
224 "Key-value pairs for configuring rarely used features.
226 other_config : hwaddr: optional string
227 An Ethernet address in the form xx:xx:xx:xx:xx:xx to set the
228 hardware address of the local port and influence the datapath
231 other_config : forward-bpdu: optional string
232 either true or false. Option to allow forwarding of BPDU frames when NORMAL
233 action is invoked. Frames with reserved Ethernet
234 addresses (e.g. STP BPDU) will be forwarded when this option
235 is enabled and the switch is not providing that functionality.
237 other_config : mac-aging-time: optional string
238 containing an integer, at least 1 The maximum number of seconds to retain a
239 MAC learning entry for which no packets have been seen. The
240 default is currently 300 seconds (5 minutes). The value, if
241 specified, is forced into a reasonable range, currently 15
244 other_config : mac-table-size: optional string
245 containing an integer, at least 1 The maximum number of MAC addresses to
246 learn. The default is currently 2048. The value, if
247 specified, is forced into a reasonable range, currently 10
250 other_config : datapath-id: optional string
251 Exactly 16 hex digits to set the OpenFlow datapath ID to a
252 specific value. May not be all-zero.
254 other_config : dp-desc: optional string
255 Human readable description of datapath. It it a maximum
256 256 byte-long free-form string to describe the datapath for
259 other_config : disable-in-band: optional string
261 If set to true, disable in-band control on the bridge
262 regardless of controller and manager settings.
264 other_config : in-band-queue: optional string
265 containing an integer, in range 0 to 4,294,967,295 A queue ID as a
268 other_config : stp-system-id: optional string
269 The bridge’s STP identifier (the lower 48 bits of the
270 bridge-id) in the form xx:xx:xx:xx:xx:xx. By default, the
271 identifier is the MAC address of the bridge.
273 other_config : stp-priority: optional string
274 containing an integer, in range 0 to 65,535 The bridge’s relative priority
275 value for determining the root bridge (the upper 16 bits of
276 the bridgeid). A bridge with the lowest bridge-id is elected
277 the root. By default, the priority is 0x8000.
279 other_config : stp-hello-time: optional string
280 containing an integer, in range 1 to 10 The interval between transmissions
281 of hello messages by designated ports, in seconds. By default
282 the hello interval is 2 seconds.
284 other_config : stp-max-age: optional string
285 containing an integer, in range 6 to 40 The maximum age of the information
286 transmitted by the bridge when it is the root bridge, in
287 seconds. By default, the maximum age is 20 seconds.
289 other_config : stp-forward-delay: optional string
290 containing an integer, in range 4 to 30 The delay to wait between
291 transitioning root and designated ports to forwarding, in
292 seconds. By default, the forwarding delay is 15 seconds.
294 other_config : mcast-snooping-aging-time: optional string,
295 containing an integer, at least 1 The maximum number of
296 seconds to retain a multicast snooping entry for which no
297 packets have been seen. The default is currently 300
298 seconds (5 minutes). The value, if specified, is forced into
299 a reasonable range, currently 15 to 3600 seconds.
301 other_config : mcast-snooping-table-size: optional string,
302 containing an integer, at least 1 The maximum number of
303 multicast snooping addresses to learn. The default is
304 currently 2048. The value, if specified, is forced into a
305 reasonable range, currently 10 to 1,000,000.
307 other_config : mcast-snooping-disable-flood-unregistered:
308 optional string, either true or false If set to false,
309 unregistered multicast packets are forwarded to all ports.
310 If set to true, unregistered multicast packets are forwarded
311 to ports connected to multicast routers.";
313 key "bridge-other-config-key";
314 leaf bridge-other-config-key {
315 description "bridge-other-config name/key";
318 leaf bridge-other-config-value {
319 description "bridge-other-config value";
326 grouping ovsdb-connection-info-attributes {
328 type inet:ip-address;
329 description "Ovsdb Connection Remote IP";
332 type inet:port-number;
333 description "Ovsdb Connection Remote Port Number";
336 type inet:ip-address;
337 description "Ovsdb Connection Local IP";
340 type inet:port-number;
341 description "Ovsdb Connection Local Port Number IP";
345 grouping ovsdb-node-attributes {
346 description "Plugin will not allow multiple connections to the same device.
347 If an application attempts to make more than one connection to the device by
348 putting multiple entries in the config data store, then it is the responsibility
349 of the application to clean the config data store";
350 container connection-info{
351 uses ovsdb-connection-info-attributes;
355 description "The database schema version";
360 description "The Open_vSwitch version number";
364 list managed-node-entry {
367 type ovsdb-bridge-ref;
371 list datapath-type-entry {
374 description "Datapath types supported by OVSDB node";
376 base datapath-type-base;
381 list interface-type-entry {
382 key "interface-type";
383 leaf interface-type {
384 description "Interface types supported by OVSDB node";
386 base interface-type-base;
391 list openvswitch-external-ids {
392 description "Key-value pairs for use by external frameworks that integrate
395 external_ids : system-id: optional string
396 A unique identifier for the Open vSwitch’s physical host.
397 The form of the identifier depends on the type of the host.
398 On a Citrix XenServer, this will likely be the same as
399 external_ids:xs-system-uuid.
401 external_ids : xs-system-uuid: optional string
402 The Citrix XenServer universally unique identifier for the
403 physical host as displayed by xe-host−list.";
405 key "external-id-key";
406 leaf external-id-key {
407 description "external-id name/key";
411 leaf external-id-value {
412 description "external-id value";
418 list openvswitch-other-configs {
419 description "Key-value pairs for configuring rarely used features.
421 other_config : stats-update-interval: optional string
422 This option will affect the update of the statistics column
423 in the following tables: Port, Interface , Mirror.
425 other_config : flow-restore-wait: optional string
426 either true or false When ovs−vswitchd starts up, it has an empty flow
427 table and therefore it handles all arriving packets in its
428 default fashion according to its configuration, by
429 dropping them or sending them to an OpenFlow controller or
430 switching them as a standalone switch.
432 other_config : flow-limit: optional string
433 containing an integer, at least 0. The maximum number of flows allowed in
434 the datapath flow table.
436 other_config : n-dpdk-rxqs: optional string
437 containing an integer, at least 1 Specifies the number of rx queues to be
438 created for each dpdk interface. If not specified or
439 specified to 0, one rx queue will be created for each dpdk
440 interface by default.
442 other_config : pmd-cpu-mask: optional string
443 Specifies CPU mask for setting the cpu affinity of
444 PMD (Poll Mode Driver) threads. Value should be in the form
445 of hex string, similar to the dpdk EAL ’-c COREMASK’ option
446 input or the ’taskset’ mask input.
448 other_config : n-handler-threads: optional string
449 containing an integer, at least 1 Specifies the number of threads for
450 software datapaths to use for handling new flows. The default
451 the number of online CPU cores minus the number of
454 other_config : n-revalidator-threads: optional string,
455 containing an integer, at least 1 Specifies the number of
456 threads for software datapaths to use for revalidating flows
459 other_config : enable-statistics: optional string
460 either ture or false. Set this value to true to enable populating the
461 statistics column or to false to explicitly disable it.";
463 key "other-config-key";
464 leaf other-config-key {
465 description "other-config name/key";
468 leaf other-config-value {
469 description "other-config value";
475 description "Node managers info";
479 description "Uri that user set to connect to the controller";
485 leaf number_of_connections {
493 description "The unique identifier of the QoS.";
502 description "The list of queues used by the QoS";
505 description "The unique identifier of the queue.";
509 list qos-external-ids {
510 key "qos-external-id-key";
511 leaf qos-external-id-key {
512 description "qos external-id name/key";
516 leaf qos-external-id-value {
517 description "qos-external-id value";
522 list qos-other-config {
524 other_config : max-rate
525 optional string, containing an integer.";
527 key "other-config-key";
528 leaf other-config-key {
529 description "qos-other-config name/key";
532 leaf other-config-value {
533 description "qos-other-config value";
542 description "The unique identifier of the queue.";
548 list queues-other-config {
550 Configuration for linux-htb QoS:
552 other_config : min-rate optional string
553 containing an integer, at least 1.
554 Minimum guaranteed bandwidth, in bit/s.
556 other_config : max-rate optional string
557 containing an integer, at least 1.
558 Maximum allowed bandwidth, in bit/s. Optional. If specified, the queue’s rate will not be allowed
559 to exceed the specified value, even if excess bandwidth is available. If unspecified, defaults to no
562 other_config : burst optional string
563 containing an integer, at least 1.
564 Burst size, in bits. This is the maximum amount of ‘‘credits’’ that a queue can accumulate while it
565 is idle. Optional. Details of the linux−htb implementation require a minimum burst size, so a
566 too-small burst will be silently ignored.
568 other_config : priority optional string.
569 containing an integer, in range 0 to 4,294,967,295.
570 A queue with a smaller priority will receive all the excess bandwidth that it can use before a
571 queue with a larger value receives any. Specific priority values are unimportant; only relative
572 ordering matters. Defaults to 0 if unspecified.
574 Configuration for linux-htb QoS:
576 other_config : min-rate optional string
577 containing an integer, at least 1.
578 Minimum guaranteed bandwidth, in bit/s.
580 other_config : max-rate optional string
581 containing an integer, at least 1.
582 Maximum allowed bandwidth, in bit/s. Optional. If specified, the queue’s rate will not be allowed
583 to exceed the specified value, even if excess bandwidth is available. If unspecified, defaults to no
586 key "queue-other-config-key";
587 leaf queue-other-config-key {
590 leaf queue-other-config-value {
597 identity interface-type-base {
598 description "Base identity for all OVSDB interface types";
601 identity interface-type-system {
602 description "Interface type for system interfaces";
603 base interface-type-base;
606 identity interface-type-internal {
607 description "Interface type for internal interfaces";
608 base interface-type-base;
611 identity interface-type-vxlan {
612 description "Interface type for vxlan interfaces";
613 base interface-type-base;
616 identity interface-type-patch {
617 description "Interface type for patch interfaces";
618 base interface-type-base;
621 identity interface-type-tap {
622 description "Interface type for tun/tap interfaces";
623 base interface-type-base;
626 identity interface-type-geneve {
627 description "Interface type for geneve interfaces";
628 base interface-type-base;
631 identity interface-type-gre {
632 description "Interface type for gre interfaces";
633 base interface-type-base;
636 identity interface-type-ipsec-gre {
637 description "Interface type for ipsec-gre interfaces";
638 base interface-type-base;
641 identity interface-type-gre64 {
642 description "Interface type for gre64 interfaces";
643 base interface-type-base;
646 identity interface-type-ipsec-gre64 {
647 description "Interface type for ipsec-gre64 interfaces";
648 base interface-type-base;
651 identity interface-type-lisp {
652 description "Interface type for lisp interfaces";
653 base interface-type-base;
656 identity interface-type-dpdk {
657 description "Interface type for dpdk interfaces";
658 base interface-type-base;
661 identity interface-type-dpdkr {
662 description "Interface type for dpdk ring interfaces";
663 base interface-type-base;
666 identity interface-type-dpdkvhost {
667 description "Interface type for dpdkvhost interfaces";
668 base interface-type-base;
671 identity interface-type-dpdkvhostuser {
672 description "Interface type for dpdkvhostuser interfaces";
673 base interface-type-base;
676 identity interface-type-stt {
677 description "Interface type for stt interfaces";
678 base interface-type-base;
681 identity qos-type-base {
682 description "the base identity for qos";
685 identity qos-type-linux-htb {
686 description "linux hierarchy token bucket classifier";
690 identity qos-type-linux-hfsc {
691 description "linux hierarchical fair service curve classifier";
695 grouping ovsdb-port-interface-attributes {
697 description "The unique identifier of the OVSDB port";
701 leaf interface-uuid {
702 description "The unique identifier of the OVSDB interface";
707 description "The name of the OVSDB port/interface";
711 leaf interface-type {
712 description "The type of the OVSDB interface";
714 base interface-type-base;
719 description "Port/Interface related optional input values";
722 description "Option name";
726 description "Option value";
732 description "Port/Interface related optional ofport";
736 leaf ofport_request {
737 description "Port/Interface related optional ofport_request, in range 1 to 65279";
744 description "The VLAN tag of the termination point.";
745 type ethertype:vlan-id;
749 description "Represents the trunks of a termination point.";
751 type ethertype:vlan-id;
756 description "The VLAN mode of the termination point.";
761 "The VLAN mode access.";
763 enum "native-tagged" {
766 "The VLAN mode native-tagged.";
768 enum "native-untagged" {
771 "The VLAN mode native-untagged.";
776 "The VLAN mode trunk.";
781 list port-other-configs {
782 description "Other config attributes for Ports
784 other_config : priority-tags: optional string
785 either true or false An 802.1Q header contains two important pieces of
786 information: a VLAN ID and a priority.
788 other_config : bond-hash-basis: optional string
789 containing an integer An integer hashed along with flows when choosing output
790 slaves in load balanced bonds. When changed, all flows will be
791 assigned different hash values possibly causing slave selection
794 other_config : bond-detect-mode: optional string
795 either miimon or carrier The means used to detect link failures. Defaults to
796 carrier which uses each interface’s carrier to detect failures.
797 When set to miimon, will check for failures by polling each
800 other_config : bond-miimon-interval: optional string
801 containing an integer The interval, in milliseconds, between successive
802 attempts to poll each interface’s MII. Relevant only when
803 other_config:bond-detect-mode is miimon
805 other_config : lacp-system-id: optional string
806 The LACP system ID of this Port. The system ID of a LACP bond
807 is used to identify itself to its partners. Must be a nonzero
808 MAC address. Defaults to the bridge Ethernet address if unset.
810 other_config : lacp-system-priority: optional string
811 containing an integer, in range 1 to 65,535 The LACP system priority of this
812 Port. In LACP negotiations, link status decisions are made by
813 the system with the numerically lower priority.
815 other_config : lacp-time: optional string
816 either slow or fast. The LACP timing which should be used on this Port. By default
817 slow is used. When configured to be fast LACP heartbeats are
818 requested at a rate of once per second causing connectivity
819 problems to be detected more quickly. In slow mode, heartbeats
820 are requested at a rate of once every 30 seconds.
822 other_config : lacp-fallback-ab: optional string
823 either true or false Determines the behavior of openvswitch bond in LACP mode.
824 If the partner switch does not support LACP, setting this
825 option to true allows openvswitch to fallback to active-backup.
826 If the option is set to false, the bond will be disabled.
827 In both the cases, once the partner switch is configured
828 to LACP mode, the bond will use LACP.
830 other_config : bond-rebalance-interval: optional string,
831 containing an integer, in range 0 to 10,000 For a load
832 balanced bonded port, the number of milliseconds between
833 successive attempts to rebalance the bond, that is, to move
834 flows from one interface on the bond to another in an attempt
835 to keep usage of each interface roughly equal. If zero, load
836 balancing is disabled on the bond (link failure still cause
837 flows to move). If less than 1000ms, the rebalance interval
840 other_config : stp-enable: optional string
841 either true or false. If spanning tree is enabled on the bridge, member ports are
842 enabled by default (with the exception of bond, internal, and
843 mirror ports which do not work with STP). If this column’s
844 value is false spanning tree is disabled on the port.
846 other_config : stp-port-num: optional string
847 containing an integer, in range 1 to 255 The port number used for the lower 8
848 bits of the port-id. By default, the numbers will be assigned
849 automatically. If any port’s number is manually configured on
850 a bridge, then they must all be.
852 other_config : stp-port-priority: optional string
853 containing an integer, in range 0 to 255 The port’s relative priority value
854 for determining the root port (the upper 8 bits of the port-id).
856 other_config : stp-path-cost: optional string
857 containing an integer, in range 0 to 65,535 Spanning tree path cost for the
858 port. A lower number indicates a faster link. By default, the
859 cost is based on the maximum speed of the link.
861 other_config : rstp-enable: optional string
863 If rapid spanning tree is enabled on the bridge, member ports
864 are enabled by default (with the exception of bond, internal,
865 and mirror ports which do not work with RSTP). If this
866 column’s value is false rapid spanning tree is disabled on
869 other_config : rstp-port-priority: optional string
870 containing an integer, in range 0 to 240 The port’s relative priority value
871 for determining the root port, in multiples of 16. By default,
872 the port priority is 0x80 (128).
874 other_config : rstp-port-num: optional string
875 containing an integer, in range 1 to 4,095 The local RSTP port number, used
876 as the lower 12 bits of the port-id.
878 other_config : rstp-port-path-cost: optional string
879 containing an integer The port path cost. The Port’s contribution, when it
880 is the Root Port, to the Root Path Cost for the Bridge.
882 other_config : rstp-port-admin-edge: optional string
885 other_config : rstp-port-auto-edge: optional string
886 either true or false The auto edge port parameter for the Port. Default
889 other_config : rstp-port-mcheck: optional string
890 either true or false The mcheck port parameter for the Port. Default is false.
892 other_config : mcast-snooping-flood: optional string
893 either true or false If set to true, multicast packets are
894 unconditionally forwarded to the specific port";
896 key "other-config-key";
897 leaf other-config-key {
898 description "port-other-config name/key";
901 leaf other-config-value {
902 description "port-other-config value";
907 list interface-other-configs {
908 description "Other config attributes for Interfaces
910 other_config : enable-vlan-splinters: optional string
911 either true or false. Set to true to enable VLAN splinters on this
912 interface. Defaults to false.";
914 key "other-config-key";
915 leaf other-config-key {
916 description "interface-other-config name/key";
919 leaf other-config-value {
920 description "interface-other-config value";
925 list port-external-ids {
926 description "Port external ids
928 external_ids : fake-bridge-id-*: optional string
929 External IDs for a fake bridge (see the fake_bridge column) are defined by
930 prefixing a Bridge external_ids key with
931 fake−bridge−, e.g. fake−bridge−xs−network−uuids.";
933 key "external-id-key";
934 leaf external-id-key {
935 description "external-id name/key";
939 leaf external-id-value {
940 description "external-id value";
946 list interface-external-ids {
947 description "Interface external ids
949 external_ids : attached-mac: optional string.
950 The MAC address programmed into the ‘‘virtual hardware’’ for this interface, in
951 the form xx:xx:xx:xx:xx:xx. For Citrix XenServer, this is the
952 value of the MAC field in the VIF record for this interface.
954 external_ids : iface-id: optional string.
955 A system-unique identifier for the interface. On XenServer, this will commonly
956 be the same as external_ids:xs-vif-uuid.
958 external_ids : iface-status: optional string
959 either active or inactive Hypervisors may sometimes have more than one interface
960 associated with a given external_ids:iface-id, only one of
961 which is actually in use at a given time.
963 external_ids : xs-vif-uuid: optional string.
964 The virtual interface associated with this interface.
966 external_ids : xs-network-uuid: optional string.
967 The virtual network to which this interface is attached.
969 external_ids : vm-id: optional string.
970 The VM to which this interface belongs. On XenServer, this will be the same as
971 external_ids:xsvm-uuid.
973 external_ids : xs-vm-uuid: optional string.
974 The VM to which this interface belongs";
976 key "external-id-key";
977 leaf external-id-key {
978 description "external-id name/key";
982 leaf external-id-value {
983 description "external-id value";
990 description "The unique identifier of the QoS entry for this port.";
995 augment "/topo:network-topology/topo:topology/topo:node" {
996 description "Augmentation for bridge nodes managed by ovsdb";
997 ext:augment-identifier "ovsdb-bridge-augmentation";
998 uses ovsdb-bridge-attributes;
1001 augment "/topo:network-topology/topo:topology/topo:node" {
1002 description "Augment topology node for an ovsdb node";
1003 ext:augment-identifier "ovsdb-node-augmentation";
1004 uses ovsdb-node-attributes;
1007 augment "/topo:network-topology/topo:topology/topo:node/topo:termination-point" {
1008 description "Augment topology node termination-point for an ovsdb port/interface";
1009 ext:augment-identifier "ovsdb-termination-point-augmentation";
1010 uses ovsdb-port-interface-attributes;