Print this page
14025 ipnet sniffing leaks promisc mode
@@ -24,11 +24,11 @@
* Use is subject to license terms.
* Copyright (c) 2016 by Delphix. All rights reserved.
*/
/*
- * Copyright (c) 2016, Joyent, Inc. All rights reserved.
+ * Copyright 2021 Joyent, Inc.
*/
/*
* The ipnet device defined here provides access to packets at the IP layer. To
* provide access to packets at this layer it registers a callback function in
@@ -2243,10 +2243,11 @@
regfail:
cmn_err(CE_WARN, "net_hook_register failed: %d", error);
strfree(ipnet->ipnet_hook->h_name);
hook_free(ipnet->ipnet_hook);
+ ipnet_leave_allmulti(ifp, ns->netstack_ipnet);
netstack_rele(ns);
return (error);
}
void
@@ -2268,10 +2269,12 @@
strfree(hook->h_name);
hook_free(hook);
+ ipnet_leave_allmulti(ipnet->ipnet_if, ipnet->ipnet_ns->netstack_ipnet);
+
kmem_free(ipnet, sizeof (*ipnet));
}
/*
* arg here comes from the ipnet_t allocated in ipnet_promisc_add.