+
+/*
+ * argv [0] = vshelper_path;
+ * argv [1] = action: "netup", "netdown"
+ * argv [2] = context identifier
+ *
+ * envp [*] = type-specific parameters
+ */
+
+long vs_net_change(struct nx_info *nxi, unsigned int cmd)
+{
+ char id_buf[8], cmd_buf[16];
+ char *argv[] = {vshelper_path, NULL, id_buf, 0};
+ char *envp[] = {"HOME=/", "TERM=linux",
+ "PATH=/sbin:/usr/sbin:/bin:/usr/bin", cmd_buf, 0};
+
+ if (!nx_info_flags(nxi, NXF_STATE_HELPER, 0))
+ return 0;
+
+ snprintf(id_buf, sizeof(id_buf)-1, "%d", nxi->nx_id);
+ snprintf(cmd_buf, sizeof(cmd_buf)-1, "VS_CMD=%08x", cmd);
+
+ switch (cmd) {
+ case VSC_NETUP:
+ argv[1] = "netup";
+ break;
+ case VSC_NETDOWN:
+ argv[1] = "netdown";
+ break;
+ default:
+ return 0;
+ }
+
+ do_vshelper(vshelper_path, argv, envp, 1);
+ return 0;
+}
+