meta-google: gbmc-bridge: Implement DHCP

This makes it possible for a BMC to acquire a public address via DHCP
provisioning.

None of the update processes are included yet.

Change-Id: I51ca2aa4859bcd2b9e909dd5a0d9e66cfbd648af
Signed-off-by: William A. Kennington III <wak@google.com>
diff --git a/meta-google/recipes-google/ncsi/files/gbmc-ncsi-br-pub-addr.sh.in b/meta-google/recipes-google/ncsi/files/gbmc-ncsi-br-pub-addr.sh.in
index 5adc413..7934033 100644
--- a/meta-google/recipes-google/ncsi/files/gbmc-ncsi-br-pub-addr.sh.in
+++ b/meta-google/recipes-google/ncsi/files/gbmc-ncsi-br-pub-addr.sh.in
@@ -63,6 +63,8 @@
 Type=unreachable
 Metric=1024
 EOF
+    # Delete DHCP configured addresses if we have a host published address
+    rm -f /etc/systemd/network/{00,}-bmc-gbmcbr.network.d/50-public.conf
   fi
 
   local file
diff --git a/meta-google/recipes-google/ncsi/files/gbmc-ncsi-clear-ip.sh.in b/meta-google/recipes-google/ncsi/files/gbmc-ncsi-clear-ip.sh.in
new file mode 100644
index 0000000..e17a5e2
--- /dev/null
+++ b/meta-google/recipes-google/ncsi/files/gbmc-ncsi-clear-ip.sh.in
@@ -0,0 +1,26 @@
+# Copyright 2021 Google LLC
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+[ -z "${gbmc_ncsi_clear_ip-}" ] || exit
+
+source /usr/libexec/ncsid_lib.sh || exit
+
+gbmc_ncsi_clear_ip_hook() {
+  UpdateIP xyz.openbmc_project.Network '@NCSI_IF@' '0.0.0.0' '0' || true
+  UpdateIP xyz.openbmc_project.Network '@NCSI_IF@' '::' '0' || true
+}
+
+GBMC_BR_DHCP_HOOKS+=(gbmc_ncsi_clear_ip_hook)
+
+gbmc_ncsi_clear_ip=1