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      errors:
76          - xyz.openbmc_project.Common.Error.InvalidArgument
77    - name: LinkLocalAutoConf
78      type: enum[self.LinkLocalConf]
79      description: >
80          This indicates link local auto configuration on this ethernet
81          interface and configured on this ethernet interface.
82    - name: IPv6AcceptRA
83      type: boolean
84      description: >
85          Boolean for accepting router advertisements in IPv6.
86    - name: NICEnabled
87      type: boolean
88      description: >
89          Boolean for to enabling or disabling the ethernet port
90    - name: LinkUp
91      type: boolean
92      flags:
93          - readonly
94      description: >
95          This property reports the link status for the NIC. The read-only
96          boolean value is TRUE when the network cable is inserted, or there is
97          a carrier signal. It is FALSE when the cable is unplugged, or the
98          carrier signal is missing.
99    - name: DefaultGateway
100      type: string
101      description: >
102          Default IPv4 gateway of the ethernet interface.
103      errors:
104          - xyz.openbmc_project.Common.Error.InvalidArgument
105    - name: DefaultGateway6
106      type: string
107      description: >
108          Default IPv6 gateway of the ethernet interface. For supported address
109          formats refer RFC 2373. Refer below man page for both v4 and v6
110          address format details
111          https://man7.org/linux/man-pages/man3/inet_pton.3.html
112      errors:
113          - xyz.openbmc_project.Common.Error.InvalidArgument
114    - name: EmitLLDP
115      type: boolean
116      default: false
117      description: >
118          Boolean for controlling LLDP packet emission on the ethernet
119          interface. The Link Layer Discovery Protocol is a link layer protocol
120          used by network devices for advertising their identity, capabilities,
121          and neighbors on a local area network based on IEEE 802 technology.
122enumerations:
123    - name: LinkLocalConf
124      description: >
125          Possible link local auto configuration values.
126      values:
127          - name: fallback
128          - name: both
129          - name: v4
130          - name: v6
131          - name: none
132
133    - name: DHCPConf
134      description: >
135          High level definitions of available DHCP states. These definitions do
136          not have a 1:1 correlation to the systemd.network configuration file
137          contents. both: Enable IPv4 DHCP and IPv6 Stateful DHCP v4v6stateless:
138          Enable IPv4 DHCP and IPv6 SLAAC v6: Enable IPv6 Stateful DHCP
139          v6stateless: Enable IPv6 SLAAC v4: Enable IPv4 DHCP none: Disable DHCP
140          for IPv4 and IPv6
141      values:
142          - name: both
143          - name: v4v6stateless
144          - name: v6
145          - name: v6stateless
146          - name: v4
147          - name: none
148