3.1.6.1 Server Application Notifies of an Interface Being Enabled or Disabled

The calling application provides the interface group name, IPv4 and/or IPv6 addresses, and state.

The server MUST search for the Interface in the InterfaceList where Interface.InterfaceGroupName matches the application-provided interface group name, and Interface.IPv4Address or Interface.IPv6Address matches one or both of the application-provided IP addresses.

If a matching entry is found, the server MUST set Interface.State to the application-provided state. Then for each entry in the WitnessRegistrationList where WitnessRegistration.NetworkName matches the application-provided network name and WitnessRegistration.IPAddress matches the application-provided IP address, the server SHOULD<8> add a change entry to WitnessRegistration.PendingChangeNotifications, with a ResourceName of the Interface.InterfaceGroupName and a NewState of the application-provided state.

Else if no matching entry is found, the server MUST create a new Interface as follows, and add it to the InterfaceList:

  • Interface.InterfaceGroupName: MUST be set to the application-provided interface group name.

  • Interface.State: MUST be set to the application-supplied state.

  • If the application supplied an IPv4 address, then Interface.IPv4Address MUST be set to it, else Interface.IPv4Address MUST be set to empty.

  • If the application supplied an IPv6 address, then Interface.IPv6Address MUST be set to it, else Interface.IPv6Address MUST be set to empty.

The server MUST awaken any pending client requests awaiting notification in sections 3.1.4.1 and 3.1.4.4.