1description: >
2    This defines an ethernet interface. An object implementing this interface
3    must implement xyz.openbmc_project.State.OperationalStatus.
4
5properties:
6    - name: InterfaceName
7      type: string
8      flags:
9          - const
10      description: >
11          Name of the ethernet interface.
12    - name: Speed
13      type: uint32
14      flags:
15          - readonly
16      description: >
17          Current speed of the ethernet interface, in Mbps.
18    - name: AutoNeg
19      type: boolean
20      flags:
21          - readonly
22      description: >
23          This indicates if the speed and duplex are automatically negotiated
24          and configured on this ethernet interface.
25    - name: MTU
26      type: size
27      default: 0
28      description: >
29          This indicates the size in bytes of largest protocol data unit, which
30          can be passed in an Ethernet frame on the interface.
31    - name: DomainName
32      type: array[string]
33      description: >
34          Domain names of the ethernet interface.
35    - name: DHCPEnabled
36      type: enum[self.DHCPConf]
37      description: >
38          Address mode of the ethernet interface. Deprecated in favor of split
39          options to avoid combinatorics.
40    - name: DHCP4
41      type: boolean
42      description: >
43          Enable or disable IPv4 DHCP.
44    - name: DHCP6
45      type: boolean
46      description: >
47          Enable or disable IPv6 DHCP.
48    - name: Nameservers
49      type: array[string]
50      description: >
51          DNS servers that are currently in use on this interface.
52      flags:
53          - readonly
54    - name: StaticNameServers
55      type: array[string]
56      description: >
57          A statically defined set of DNS server IP addresses to be used when
58          DHCP provisioning is not enabled for name server configuration. As an
59          implementation option this may also be used in addition to DHCP
60          provided addresses, or in cases where the DHCP server provides no DNS
61          assignments.
62      errors:
63          - xyz.openbmc_project.Common.Error.InvalidArgument
64    - name: NTPServers
65      type: array[string]
66      description: >
67          NTP servers that are currently in use on this interface. This includes
68          both DHCP and static NTP server addresses.
69    - name: StaticNTPServers
70      type: array[string]
71      description: >
72          This property describes statically defined NTPServers on the
73          interface. This property supports read/write operation. Configure the
74          NTP servers on the system during write operation.
75    - name: LinkLocalAutoConf
76      type: enum[self.LinkLocalConf]
77      description: >
78          This indicates link local auto configuration on this ethernet
79          interface and configured on this ethernet interface.
80    - name: IPv6AcceptRA
81      type: boolean
82      description: >
83          Boolean for accepting router advertisements in IPv6.
84    - name: NICEnabled
85      type: boolean
86      description: >
87          Boolean for to enabling or disabling the ethernet port
88    - name: LinkUp
89      type: boolean
90      flags:
91          - readonly
92      description: >
93          This property reports the link status for the NIC. The read-only
94          boolean value is TRUE when the network cable is inserted, or there is
95          a carrier signal. It is FALSE when the cable is unplugged, or the
96          carrier signal is missing.
97    - name: DefaultGateway
98      type: string
99      description: >
100          Default IPv4 gateway of the ethernet interface.
101      errors:
102          - xyz.openbmc_project.Common.Error.InvalidArgument
103    - name: DefaultGateway6
104      type: string
105      description: >
106          Default IPv6 gateway of the ethernet interface. For supported address
107          formats refer RFC 2373. Refer below man page for both v4 and v6
108          address format details
109          https://man7.org/linux/man-pages/man3/inet_pton.3.html
110      errors:
111          - xyz.openbmc_project.Common.Error.InvalidArgument
112    - name: EmitLLDP
113      type: boolean
114      default: false
115      description: >
116          Boolean for controlling LLDP packet emission on the ethernet
117          interface. The Link Layer Discovery Protocol is a link layer protocol
118          used by network devices for advertising their identity, capabilities,
119          and neighbors on a local area network based on IEEE 802 technology.
120enumerations:
121    - name: LinkLocalConf
122      description: >
123          Possible link local auto configuration values.
124      values:
125          - name: fallback
126          - name: both
127          - name: v4
128          - name: v6
129          - name: none
130
131    - name: DHCPConf
132      description: >
133          High level definitions of available DHCP states. These definitions do
134          not have a 1:1 correlation to the systemd.network configuration file
135          contents. both: Enable IPv4 DHCP and IPv6 Stateful DHCP v4v6stateless:
136          Enable IPv4 DHCP and IPv6 SLAAC v6: Enable IPv6 Stateful DHCP
137          v6stateless: Enable IPv6 SLAAC v4: Enable IPv4 DHCP none: Disable DHCP
138          for IPv4 and IPv6
139      values:
140          - name: both
141          - name: v4v6stateless
142          - name: v6
143          - name: v6stateless
144          - name: v4
145          - name: none
146