<html><head><meta http-equiv="Content-Type" content="text/html charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class="">As of now, the network/service/isc-dhcp package uses UDP sockets. The build.sh file is using the options “—enable-use-sockets” and “—enable-ipv4-pktinfo”. More details on this workaround can be found here. <a href="https://kb.isc.org/article/AA-01040/0/Building-ISC-DHCP-on-Solaris-11.html" class="">https://kb.isc.org/article/AA-01040/0/Building-ISC-DHCP-on-Solaris-11.html</a><div class=""><br class=""></div><div class=""><br class=""></div><div class="">The problem with using UDP sockets is that unicast clients cannot correctly obtain an IP without a relay, which really isn’t ideal. I’ve sent this patch to the isc-dhcp team, but i figured it might be found more quickly useful here.</div><div class=""><br class=""></div><div class="">I’ve created two patches for isc-dhcp that allow dhcpd to use DLPI with VNIC’s and other vanity named interfaces. the modified files are “./configure.ac” and “./common/dlpi.c” Below is the diff info.</div><div class=""><br class=""></div><div class=""><br class=""></div><div class=""><br class=""></div><div class=""><br class=""></div><div class=""><br class=""></div><div class="">--- /Users/alexmcwhirter/Downloads/dhcp-4.3.1 2/common/dlpi.c<span class="Apple-tab-span" style="white-space: pre;">    </span>2014-07-29 18:41:04.000000000 -0400</div><div class=""><div class="">+++ /Users/alexmcwhirter/Desktop/dhcp-4.3.1/common/dlpi.c<span class="Apple-tab-span" style="white-space:pre">        </span>2014-11-30 20:48:39.000000000 -0500</div><div class="">@@ -130,7 +130,14 @@</div><div class=""> </div><div class=""> #define DLPI_MAXDLBUF<span class="Apple-tab-span" style="white-space:pre">              </span>8192<span class="Apple-tab-span" style="white-space:pre">        </span>/* Buffer size */</div><div class=""> #define DLPI_MAXDLADDR<span class="Apple-tab-span" style="white-space:pre">             </span>1024<span class="Apple-tab-span" style="white-space:pre">        </span>/* Max address size */</div><div class="">-#define DLPI_DEVDIR<span class="Apple-tab-span" style="white-space:pre">                </span>"/dev/"<span class="Apple-tab-span" style="white-space:pre">   </span>/* Device directory */</div><div class="">+</div><div class="">+/* Solaris 11 / Illumos 11 uses vanity names for ethernet devices</div><div class="">+ * and places them in /dev/net */</div><div class="">+#ifdef __SOLARIS_2_11</div><div class="">+# define DLPI_DEVDIR<span class="Apple-tab-span" style="white-space:pre">            </span>"/dev/net/"<span class="Apple-tab-span" style="white-space:pre">       </span>/* Device directory */</div><div class="">+#else</div><div class="">+# define DLPI_DEVDIR<span class="Apple-tab-span" style="white-space:pre">               </span>"/dev/"<span class="Apple-tab-span" style="white-space:pre">   </span>/* Device directory */</div><div class="">+#endif</div><div class=""> </div><div class=""> static int dlpiopen(const char *ifname);</div><div class=""> static int dlpiunit (char *ifname);</div><div class="">@@ -794,9 +801,13 @@</div><div class=""> <span class="Apple-tab-span" style="white-space:pre">    </span>ep = cp = ifname;</div><div class=""> <span class="Apple-tab-span" style="white-space:pre">   </span>while (*ep)</div><div class=""> <span class="Apple-tab-span" style="white-space:pre">         </span>ep++;</div><div class="">-<span class="Apple-tab-span" style="white-space:pre">    </span>/* And back up to the first digit (unit number) */</div><div class="">-<span class="Apple-tab-span" style="white-space:pre">       </span>while ((*(ep - 1) >= '0' && *(ep - 1) <= '9') || *(ep - 1) == ':')</div><div class="">-<span class="Apple-tab-span" style="white-space:pre">         </span>ep--;</div><div class="">+    /* Solaris 11 / Illumos 11 should not have the number removed from the </div><div class="">+     * interface name */</div><div class="">+    if (__SOLARIS_2_11 != 1) {</div><div class="">+        /* And back up to the first digit (unit number) */</div><div class="">+        while ((*(ep - 1) >= '0' && *(ep - 1) <= '9') || *(ep - 1) == ':')</div><div class="">+            ep--;</div><div class="">+    }</div><div class=""> <span class="Apple-tab-span" style="white-space:pre">      </span></div><div class=""> <span class="Apple-tab-span" style="white-space:pre">    </span>/* Copy everything up to the unit number */</div><div class=""> <span class="Apple-tab-span" style="white-space:pre"> </span>while (cp < ep) {</div></div><div class=""><br class=""></div><div class=""><br class=""></div><div class=""><br class=""></div><div class=""><br class=""></div><div class=""><div class="">--- /Users/alexmcwhirter/Downloads/dhcp-4.3.1 2/configure.ac<span class="Apple-tab-span" style="white-space:pre">    </span>2014-08-06 18:35:33.000000000 -0400</div><div class="">+++ /Users/alexmcwhirter/Desktop/dhcp-4.3.1/configure.ac<span class="Apple-tab-span" style="white-space:pre">       </span>2014-11-30 20:50:11.000000000 -0500</div><div class="">@@ -13,6 +13,13 @@</div><div class=""> </div><div class=""> AC_CANONICAL_HOST</div><div class=""> </div><div class="">+# Solaris 11 / Illumos 11 is identified as solaris2.11</div><div class="">+AM_CONDITIONAL([SOLARIS_2_11], [test x$host_os = xsolaris2.11])</div><div class="">+</div><div class="">+# If host_os is solaris2.11 then define __SOLARIS_2_11</div><div class="">+AM_COND_IF([SOLARIS_2_11],[AC_DEFINE([__SOLARIS_2_11], [1],</div><div class="">+    [Define if host_os is solaris2.11])]) </div><div class="">+</div><div class=""> # We want to turn on warnings if we are using gcc and the user did </div><div class=""> # not specify CFLAGS. The autoconf check for the C compiler sets the</div><div class=""> # CFLAGS if gcc is used, so we will save it before we run that check.</div></div><div class=""><br class=""></div><div class=""><br class=""></div><div class=""><br class=""></div></body></html>