From 9cc151165e77f0906e2e5ac593a7cc0c17af48f6 Mon Sep 17 00:00:00 2001 From: Paul White Date: Sat, 9 Nov 2024 00:10:20 +0000 Subject: [PATCH] ucentral-schema: add udhcpc-vsi-parse script Fixes: WIFI-14271 Signed-off-by: Paul White --- .../etc/udhcpc.user.d/udhcpc-vsi-parse.sh | 3 ++ .../usr/share/ucentral/udhcpc-vsi-parse.uc | 49 +++++++++++++++++++ 2 files changed, 52 insertions(+) create mode 100644 feeds/ucentral/ucentral-schema/files/etc/udhcpc.user.d/udhcpc-vsi-parse.sh create mode 100755 feeds/ucentral/ucentral-schema/files/usr/share/ucentral/udhcpc-vsi-parse.uc diff --git a/feeds/ucentral/ucentral-schema/files/etc/udhcpc.user.d/udhcpc-vsi-parse.sh b/feeds/ucentral/ucentral-schema/files/etc/udhcpc.user.d/udhcpc-vsi-parse.sh new file mode 100644 index 000000000..00b43c9bd --- /dev/null +++ b/feeds/ucentral/ucentral-schema/files/etc/udhcpc.user.d/udhcpc-vsi-parse.sh @@ -0,0 +1,3 @@ +#!/bin/sh + +/usr/share/ucentral/udhcpc-vsi-parse.uc "$@" diff --git a/feeds/ucentral/ucentral-schema/files/usr/share/ucentral/udhcpc-vsi-parse.uc b/feeds/ucentral/ucentral-schema/files/usr/share/ucentral/udhcpc-vsi-parse.uc new file mode 100755 index 000000000..f2055ed70 --- /dev/null +++ b/feeds/ucentral/ucentral-schema/files/usr/share/ucentral/udhcpc-vsi-parse.uc @@ -0,0 +1,49 @@ +#!/usr/bin/ucode + +let fs = require("fs"); + +let cmd = ARGV[0]; +let ifname = getenv("interface"); +let vendor = getenv("vendor"); +let value = getenv("opt43"); + +if (!ifname) + exit(0); + +if (!vendor) + vendor = "unknown"; + +if (cmd == "deconfig" || !vendor || !value) { + // No VSI available + if (fs.stat("/tmp/udhcpc-vsi.json")) { + let f = fs.open("/tmp/udhcpc-vsi.json", "r"); + let r_list = json(f.read('all')); + f.close(); + if (type(r_list) == "object") + vsi_list = r_list; + + if (ifname in vsi_list) { + delete vsi_list[ifname]; + if (length(vsi_list)) + fs.writefile("/tmp/udhcpc-vsi.json", vsi_list); + else + fs.unlink("/tmp/udhcpc-vsi.json"); + } + } +} +else if (cmd == "bound") { + let vsi = { vendor, value }; + + let vsi_list = {}; + if (fs.stat("/tmp/udhcpc-vsi.json")) { + let f = fs.open("/tmp/udhcpc-vsi.json", "r"); + let r_list = json(f.read('all')); + f.close(); + if (type(r_list) == "object") + vsi_list = r_list; + } + vsi_list[ifname] = vsi; + fs.writefile("/tmp/udhcpc-vsi.json", vsi_list); +} + +exit(0);