diff -r -u Makefile.in Makefile.in
--- Makefile.in
+++ Makefile.in
@@ -147,6 +147,8 @@
 IOCTL_METHOD = @IOCTL_METHOD@
 IPFORWARD = @IPFORWARD@
 ISISD = @ISISD@
+ISIS_LIBS = @ISIS_LIBS@
+ISIS_TARGETS = @ISIS_TARGETS@
 ISIS_TOPOLOGY_DIR = @ISIS_TOPOLOGY_DIR@
 ISIS_TOPOLOGY_INCLUDES = @ISIS_TOPOLOGY_INCLUDES@
 ISIS_TOPOLOGY_LIB = @ISIS_TOPOLOGY_LIB@
diff -r -u config.h.in config.h.in
--- config.h.in
+++ config.h.in
@@ -512,6 +512,9 @@
 /* Define to 1 if you have the <time.h> header file. */
 #undef HAVE_TIME_H
 
+/* Enable TRILL support */
+#undef HAVE_TRILL
+
 /* Define to 1 if you have the <ucontext.h> header file. */
 #undef HAVE_UCONTEXT_H
 
diff -r -u configure configure
--- configure
+++ configure
@@ -658,6 +658,8 @@
 enable_vty_group
 enable_group
 enable_user
+ISIS_LIBS
+ISIS_TARGETS
 ISIS_TOPOLOGY_LIB
 ISIS_TOPOLOGY_DIR
 ISIS_TOPOLOGY_INCLUDES
@@ -801,6 +803,7 @@
 enable_ospf6d
 enable_watchquagga
 enable_isisd
+enable_trill
 enable_solaris
 enable_bgp_announce
 enable_netlink
@@ -1482,6 +1485,7 @@
   --disable-ospf6d        do not build ospf6d
   --disable-watchquagga   do not build watchquagga
   --enable-isisd          build isisd
+  --enable-trill          include trill support
   --enable-solaris          build solaris
   --disable-bgp-announce, turn off BGP route announcement
   --enable-netlink        force to use Linux netlink interface
@@ -12125,6 +12129,11 @@
   enableval=$enable_isisd;
 fi
 
+# Check whether --enable-trill was given.
+if test "${enable_trill+set}" = set; then :
+  enableval=$enable_trill;
+fi
+
 # Check whether --enable-solaris was given.
 if test "${enable_solaris+set}" = set; then :
   enableval=$enable_solaris;
@@ -12362,6 +12371,80 @@
 
 
 
+if test "${enable_trill}" = "yes"; then
+  ac_fn_c_check_header_mongrel "$LINENO" "net/trill.h" "ac_cv_header_net_trill_h" "$ac_includes_default"
+if test "x$ac_cv_header_net_trill_h" = xyes; then :
+
+fi
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dladm_valid_bridgename in -ldladm" >&5
+$as_echo_n "checking for dladm_valid_bridgename in -ldladm... " >&6; }
+if ${ac_cv_lib_dladm_dladm_valid_bridgename+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldladm  $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+/* Override any GCC internal prototype to avoid an error.
+   Use char because int might match the return type of a GCC
+   builtin and then its argument prototype would still apply.  */
+#ifdef __cplusplus
+extern "C"
+#endif
+char dladm_valid_bridgename ();
+int
+main ()
+{
+return dladm_valid_bridgename ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_dladm_dladm_valid_bridgename=yes
+else
+  ac_cv_lib_dladm_dladm_valid_bridgename=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dladm_dladm_valid_bridgename" >&5
+$as_echo "$ac_cv_lib_dladm_dladm_valid_bridgename" >&6; }
+if test "x$ac_cv_lib_dladm_dladm_valid_bridgename" = xyes; then :
+  libdladm=yes
+fi
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking TRILL IS-IS support" >&5
+$as_echo_n "checking TRILL IS-IS support... " >&6; }
+  if test $ac_cv_header_net_trill_h = no || \
+    test $ac_cv_lib_dladm_dladm_valid_bridgename = no; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: none" >&5
+$as_echo "none" >&6; }
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: *** TRILL IS-IS support will not be built ***" >&5
+$as_echo "$as_me: WARNING: *** TRILL IS-IS support will not be built ***" >&2;}
+    enable_trill=no
+  else
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+
+$as_echo "#define HAVE_TRILL /**/" >>confdefs.h
+
+  fi
+fi
+if test "${enable_trill}" = "yes"; then
+  ISIS_TARGETS="isisd trilld"
+  ISIS_LIBS=-ldladm
+else
+  ISIS_TARGETS="isisd"
+  ISIS_LIBS=
+fi
+
+
+
 if test "${enable_user}" = "yes" || test x"${enable_user}" = x""; then
   enable_user="quagga"
 elif test "${enable_user}" = "no"; then
@@ -15985,45 +16068,48 @@
 
 $as_echo "#define ISIS_METHOD_BPF 3" >>confdefs.h
 
-ac_fn_c_check_header_mongrel "$LINENO" "net/bpf.h" "ac_cv_header_net_bpf_h" "$ac_includes_default"
+if test "${enable_isisd}" = "yes"; then
+  ISIS_METHOD_MACRO=
+  ac_fn_c_check_header_mongrel "$LINENO" "net/bpf.h" "ac_cv_header_net_bpf_h" "$ac_includes_default"
 if test "x$ac_cv_header_net_bpf_h" = xyes; then :
 
 fi
 
 
-ac_fn_c_check_header_mongrel "$LINENO" "sys/dlpi.h" "ac_cv_header_sys_dlpi_h" "$ac_includes_default"
+  ac_fn_c_check_header_mongrel "$LINENO" "sys/dlpi.h" "ac_cv_header_sys_dlpi_h" "$ac_includes_default"
 if test "x$ac_cv_header_sys_dlpi_h" = xyes; then :
 
 fi
 
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking zebra IS-IS I/O method" >&5
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking zebra IS-IS I/O method" >&5
 $as_echo_n "checking zebra IS-IS I/O method... " >&6; }
-if test x"$opsys" = x"gnu-linux"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: pfpacket" >&5
+  if test x"$opsys" = x"gnu-linux"; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: pfpacket" >&5
 $as_echo "pfpacket" >&6; }
-  ISIS_METHOD_MACRO="ISIS_METHOD_PFPACKET"
-elif test x"$opsys" = x"sol2-6" -o x"$opsys" = x"sol8"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: DLPI" >&5
+    ISIS_METHOD_MACRO="ISIS_METHOD_PFPACKET"
+  elif test x"$opsys" = x"sol2-6" -o x"$opsys" = x"sol8"; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: DLPI" >&5
 $as_echo "DLPI" >&6; }
-  ISIS_METHOD_MACRO="ISIS_METHOD_DLPI"
-else
-  if test $ac_cv_header_net_bpf_h = no; then
-    if test $ac_cv_header_sys_dlpi_h = no; then
-      { $as_echo "$as_me:${as_lineno-$LINENO}: result: none" >&5
+    ISIS_METHOD_MACRO="ISIS_METHOD_DLPI"
+  else
+    if test $ac_cv_header_net_bpf_h = no; then
+      if test $ac_cv_header_sys_dlpi_h = no; then
+        { $as_echo "$as_me:${as_lineno-$LINENO}: result: none" >&5
 $as_echo "none" >&6; }
-      { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: *** IS-IS support will not be built ***" >&5
+        { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: *** IS-IS support will not be built ***" >&5
 $as_echo "$as_me: WARNING: *** IS-IS support will not be built ***" >&2;}
-      ISISD=""
-    else
-      { $as_echo "$as_me:${as_lineno-$LINENO}: result: DLPI" >&5
+        ISISD=""
+      else
+        { $as_echo "$as_me:${as_lineno-$LINENO}: result: DLPI" >&5
 $as_echo "DLPI" >&6; }
-    fi
-    ISIS_METHOD_MACRO="ISIS_METHOD_DLPI"
-  else
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: BPF" >&5
+      fi
+      ISIS_METHOD_MACRO="ISIS_METHOD_DLPI"
+    else
+      { $as_echo "$as_me:${as_lineno-$LINENO}: result: BPF" >&5
 $as_echo "BPF" >&6; }
-    ISIS_METHOD_MACRO="ISIS_METHOD_BPF"
+      ISIS_METHOD_MACRO="ISIS_METHOD_BPF"
+    fi
   fi
 fi
 
diff -r -u isisd/Makefile.in isisd/Makefile.in
--- isisd/Makefile.in
+++ isisd/Makefile.in
@@ -38,7 +38,7 @@
 build_triplet = @build@
 host_triplet = @host@
 target_triplet = @target@
-sbin_PROGRAMS = isisd$(EXEEXT)
+EXTRA_PROGRAMS = isisd$(EXEEXT) trilld$(EXEEXT)
 subdir = isisd
 DIST_COMMON = README $(dist_examples_DATA) $(noinst_HEADERS) \
 	$(srcdir)/Makefile.am $(srcdir)/Makefile.in AUTHORS
@@ -75,9 +75,15 @@
 	isis_events.$(OBJEXT) isis_spf.$(OBJEXT) isis_route.$(OBJEXT) \
 	isis_routemap.$(OBJEXT)
 am_isisd_OBJECTS = isis_main.$(OBJEXT) $(am__objects_1) \
-	isis_bpf.$(OBJEXT) isis_dlpi.$(OBJEXT) isis_pfpacket.$(OBJEXT)
+	isis_bpf.$(OBJEXT) isis_dlpi.$(OBJEXT) isis_pfpacket.$(OBJEXT) \
+	isis_trilldummy.$(OBJEXT)
 isisd_OBJECTS = $(am_isisd_OBJECTS)
 isisd_DEPENDENCIES = ../lib/libzebra.la
+am_trilld_OBJECTS = isis_main.$(OBJEXT) $(am__objects_1) \
+	isis_trill.$(OBJEXT) isis_trillio.$(OBJEXT) \
+	isis_trillvlans.$(OBJEXT) isis_trillbpdu.$(OBJEXT)
+trilld_OBJECTS = $(am_trilld_OBJECTS)
+trilld_DEPENDENCIES = ../lib/libzebra.la
 DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
 depcomp = $(SHELL) $(top_srcdir)/depcomp
 am__depfiles_maybe = depfiles
@@ -91,8 +97,8 @@
 LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
 	--mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
 	$(LDFLAGS) -o $@
-SOURCES = $(libisis_a_SOURCES) $(isisd_SOURCES)
-DIST_SOURCES = $(libisis_a_SOURCES) $(isisd_SOURCES)
+SOURCES = $(libisis_a_SOURCES) $(isisd_SOURCES) $(trilld_SOURCES)
+DIST_SOURCES = $(libisis_a_SOURCES) $(isisd_SOURCES) $(trilld_SOURCES)
 RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
 	html-recursive info-recursive install-data-recursive \
 	install-dvi-recursive install-exec-recursive \
@@ -201,6 +207,8 @@
 IOCTL_METHOD = @IOCTL_METHOD@
 IPFORWARD = @IPFORWARD@
 ISISD = @ISISD@
+ISIS_LIBS = @ISIS_LIBS@
+ISIS_TARGETS = @ISIS_TARGETS@
 ISIS_TOPOLOGY_DIR = @ISIS_TOPOLOGY_DIR@
 ISIS_TOPOLOGY_INCLUDES = @ISIS_TOPOLOGY_INCLUDES@
 ISIS_TOPOLOGY_LIB = @ISIS_TOPOLOGY_LIB@
@@ -212,7 +220,7 @@
 LIBOBJS = @LIBOBJS@
 LIBPAM = @LIBPAM@
 LIBREADLINE = @LIBREADLINE@
-LIBS = @LIBS@ 
+LIBS = @LIBS@ @ISIS_LIBS@
 LIBTOOL = @LIBTOOL@
 LIB_IPV6 = @LIB_IPV6@
 LIB_REGEX = @LIB_REGEX@
@@ -327,6 +335,7 @@
 AM_CFLAGS = $(PICFLAGS)
 AM_LDFLAGS = $(PILDFLAGS)
 noinst_LIBRARIES = libisis.a
+sbin_PROGRAMS = @ISIS_TARGETS@
 SUBDIRS = topology
 libisis_a_SOURCES = \
 	isis_adjacency.c isis_lsp.c dict.c isis_circuit.c isis_pdu.c \
@@ -339,13 +348,22 @@
 	isis_lsp.h dict.h isis_circuit.h isis_misc.h isis_network.h \
 	isis_zebra.h isis_dr.h isis_flags.h isis_dynhn.h isis_common.h \
 	iso_checksum.h isis_csm.h isis_events.h isis_spf.h isis_route.h \
+	isis_trill.h \
 	include-netbsd/clnp.h include-netbsd/esis.h include-netbsd/iso.h
 
 isisd_SOURCES = \
 	isis_main.c $(libisis_a_SOURCES) \
-	isis_bpf.c isis_dlpi.c isis_pfpacket.c
+	isis_bpf.c isis_dlpi.c isis_pfpacket.c isis_trilldummy.c
 
-isisd_LDADD = @ISIS_TOPOLOGY_LIB@ ../lib/libzebra.la @LIBCAP@
+isisd_LDADD = @ISIS_TOPOLOGY_LIB@ ../lib/libzebra.la @LIBCAP@ @LIBM@
+trilld_SOURCES = \
+	isis_main.c $(libisis_a_SOURCES) isis_trill.c isis_trillio.c \
+	isis_trillvlans.c isis_trillbpdu.c
+
+trilld_LDADD = @ISIS_TOPOLOGY_LIB@ ../lib/libzebra.la @LIBCAP@ @LIBM@
+EXTRA_DIST = isis_bpf.c isis_dlpi.c isis_pfpacket.c isis_trill.c \
+	isis_trillio.c isis_trillvlans.c isis_trillbpdu.c
+
 examplesdir = $(exampledir)
 dist_examples_DATA = isisd.conf.sample
 all: all-recursive
@@ -435,6 +453,9 @@
 isisd$(EXEEXT): $(isisd_OBJECTS) $(isisd_DEPENDENCIES) 
 	@rm -f isisd$(EXEEXT)
 	$(LINK) $(isisd_OBJECTS) $(isisd_LDADD) $(LIBS)
+trilld$(EXEEXT): $(trilld_OBJECTS) $(trilld_DEPENDENCIES) 
+	@rm -f trilld$(EXEEXT)
+	$(LINK) $(trilld_OBJECTS) $(trilld_LDADD) $(LIBS)
 
 mostlyclean-compile:
 	-rm -f *.$(OBJEXT)
@@ -461,6 +482,11 @@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/isis_routemap.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/isis_spf.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/isis_tlv.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/isis_trill.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/isis_trillbpdu.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/isis_trilldummy.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/isis_trillio.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/isis_trillvlans.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/isis_zebra.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/isisd.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/iso_checksum.Po@am__quote@
diff -r -u solaris/Makefile.in solaris/Makefile.in
--- solaris/Makefile.in
+++ solaris/Makefile.in
@@ -97,6 +97,8 @@
 IOCTL_METHOD = @IOCTL_METHOD@
 IPFORWARD = @IPFORWARD@
 ISISD = @ISISD@
+ISIS_LIBS = @ISIS_LIBS@
+ISIS_TARGETS = @ISIS_TARGETS@
 ISIS_TOPOLOGY_DIR = @ISIS_TOPOLOGY_DIR@
 ISIS_TOPOLOGY_INCLUDES = @ISIS_TOPOLOGY_INCLUDES@
 ISIS_TOPOLOGY_LIB = @ISIS_TOPOLOGY_LIB@
@@ -229,7 +231,7 @@
 pkg_packages = $(pkg_names:%=@PACKAGE_TARNAME@-%-$(pkg_name_rev).pkg)
 pkg_pkginfos = $(pkg_names:%=pkginfo.%.full)
 pkg_prototypes = $(pkg_names:%=prototype.%)
-pkg_manifests = quagga.xml
+pkg_manifests = quagga.xml trill.xml
 
 # pkgmk variable substitutions wont grok ${variable} in prototype
 # file, so we cant let autoconf generate the file sadly
