author | Mike Sullivan <Mike.Sullivan@Oracle.COM> |
Mon, 08 Jul 2013 17:52:57 -0700 | |
changeset 1383 | 41b331c5dc97 |
parent 855 | e14713202945 |
child 3637 | ccffa596a69c |
permissions | -rw-r--r-- |
417
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1 |
diff --git configure.ac configure.ac |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2 |
--- configure.ac |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3 |
+++ configure.ac |
641
719d637aca9f
7119945 Update Quagga to version 0.99.19
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
417
diff
changeset
|
4 |
@@ -202,6 +202,8 @@ |
417
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5 |
[ --disable-watchquagga do not build watchquagga]) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6 |
AC_ARG_ENABLE(isisd, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7 |
[ --enable-isisd build isisd]) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8 |
+AC_ARG_ENABLE(trill, |
641
719d637aca9f
7119945 Update Quagga to version 0.99.19
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
417
diff
changeset
|
9 |
+[ --enable-trill include trill support]) |
719d637aca9f
7119945 Update Quagga to version 0.99.19
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
417
diff
changeset
|
10 |
AC_ARG_ENABLE(solaris, |
719d637aca9f
7119945 Update Quagga to version 0.99.19
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
417
diff
changeset
|
11 |
[ --enable-solaris build solaris]) |
417
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
12 |
AC_ARG_ENABLE(bgp-announce, |
641
719d637aca9f
7119945 Update Quagga to version 0.99.19
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
417
diff
changeset
|
13 |
@@ -328,6 +330,30 @@ |
417
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
14 |
AC_SUBST(ISIS_TOPOLOGY_DIR) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
15 |
AC_SUBST(ISIS_TOPOLOGY_LIB) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
16 |
|
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
17 |
+if test "${enable_trill}" = "yes"; then |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
18 |
+ AC_CHECK_HEADER(net/trill.h) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
19 |
+ AC_CHECK_LIB(dladm, dladm_valid_bridgename, libdladm=yes) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
20 |
+ AC_MSG_CHECKING(TRILL IS-IS support) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
21 |
+ if test $ac_cv_header_net_trill_h = no || \ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
22 |
+ test $ac_cv_lib_dladm_dladm_valid_bridgename = no; then |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
23 |
+ AC_MSG_RESULT(none) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
24 |
+ AC_MSG_WARN([*** TRILL IS-IS support will not be built ***]) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
25 |
+ enable_trill=no |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
26 |
+ else |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
27 |
+ AC_MSG_RESULT(yes) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
28 |
+ AC_DEFINE(HAVE_TRILL,,Enable TRILL support) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
29 |
+ fi |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
30 |
+fi |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
31 |
+if test "${enable_trill}" = "yes"; then |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
32 |
+ ISIS_TARGETS="isisd trilld" |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
33 |
+ ISIS_LIBS=-ldladm |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
34 |
+else |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
35 |
+ ISIS_TARGETS="isisd" |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
36 |
+ ISIS_LIBS= |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
37 |
+fi |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
38 |
+AC_SUBST(ISIS_TARGETS) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
39 |
+AC_SUBST(ISIS_LIBS) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
40 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
41 |
if test "${enable_user}" = "yes" || test x"${enable_user}" = x""; then |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
42 |
enable_user="quagga" |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
43 |
elif test "${enable_user}" = "no"; then |
641
719d637aca9f
7119945 Update Quagga to version 0.99.19
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
417
diff
changeset
|
44 |
@@ -785,28 +811,31 @@ |
719d637aca9f
7119945 Update Quagga to version 0.99.19
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
417
diff
changeset
|
45 |
AC_DEFINE(ISIS_METHOD_PFPACKET, 1, [ constant value for isis method pfpacket ]) |
719d637aca9f
7119945 Update Quagga to version 0.99.19
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
417
diff
changeset
|
46 |
AC_DEFINE(ISIS_METHOD_DLPI, 2, [ constant value for isis method dlpi ]) |
719d637aca9f
7119945 Update Quagga to version 0.99.19
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
417
diff
changeset
|
47 |
AC_DEFINE(ISIS_METHOD_BPF, 3, [ constant value for isis method bpf ]) |
417
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
48 |
-AC_CHECK_HEADER(net/bpf.h) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
49 |
-AC_CHECK_HEADER(sys/dlpi.h) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
50 |
-AC_MSG_CHECKING(zebra IS-IS I/O method) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
51 |
-if test x"$opsys" = x"gnu-linux"; then |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
52 |
- AC_MSG_RESULT(pfpacket) |
641
719d637aca9f
7119945 Update Quagga to version 0.99.19
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
417
diff
changeset
|
53 |
- ISIS_METHOD_MACRO="ISIS_METHOD_PFPACKET" |
417
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
54 |
-elif test x"$opsys" = x"sol2-6" -o x"$opsys" = x"sol8"; then |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
55 |
- AC_MSG_RESULT(DLPI) |
641
719d637aca9f
7119945 Update Quagga to version 0.99.19
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
417
diff
changeset
|
56 |
- ISIS_METHOD_MACRO="ISIS_METHOD_DLPI" |
417
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
57 |
-else |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
58 |
- if test $ac_cv_header_net_bpf_h = no; then |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
59 |
- if test $ac_cv_header_sys_dlpi_h = no; then |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
60 |
- AC_MSG_RESULT(none) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
61 |
- AC_MSG_WARN([*** IS-IS support will not be built ***]) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
62 |
- ISISD="" |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
63 |
- else |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
64 |
- AC_MSG_RESULT(DLPI) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
65 |
- fi |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
66 |
+if test "${enable_isisd}" = "yes"; then |
641
719d637aca9f
7119945 Update Quagga to version 0.99.19
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
417
diff
changeset
|
67 |
+ ISIS_METHOD_MACRO= |
417
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
68 |
+ AC_CHECK_HEADER(net/bpf.h) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
69 |
+ AC_CHECK_HEADER(sys/dlpi.h) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
70 |
+ AC_MSG_CHECKING(zebra IS-IS I/O method) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
71 |
+ if test x"$opsys" = x"gnu-linux"; then |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
72 |
+ AC_MSG_RESULT(pfpacket) |
641
719d637aca9f
7119945 Update Quagga to version 0.99.19
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
417
diff
changeset
|
73 |
+ ISIS_METHOD_MACRO="ISIS_METHOD_PFPACKET" |
417
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
74 |
+ elif test x"$opsys" = x"sol2-6" -o x"$opsys" = x"sol8"; then |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
75 |
+ AC_MSG_RESULT(DLPI) |
641
719d637aca9f
7119945 Update Quagga to version 0.99.19
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
417
diff
changeset
|
76 |
ISIS_METHOD_MACRO="ISIS_METHOD_DLPI" |
417
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
77 |
else |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
78 |
- AC_MSG_RESULT(BPF) |
641
719d637aca9f
7119945 Update Quagga to version 0.99.19
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
417
diff
changeset
|
79 |
- ISIS_METHOD_MACRO="ISIS_METHOD_BPF" |
417
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
80 |
+ if test $ac_cv_header_net_bpf_h = no; then |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
81 |
+ if test $ac_cv_header_sys_dlpi_h = no; then |
641
719d637aca9f
7119945 Update Quagga to version 0.99.19
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
417
diff
changeset
|
82 |
+ AC_MSG_RESULT(none) |
719d637aca9f
7119945 Update Quagga to version 0.99.19
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
417
diff
changeset
|
83 |
+ AC_MSG_WARN([*** IS-IS support will not be built ***]) |
719d637aca9f
7119945 Update Quagga to version 0.99.19
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
417
diff
changeset
|
84 |
+ ISISD="" |
417
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
85 |
+ else |
641
719d637aca9f
7119945 Update Quagga to version 0.99.19
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
417
diff
changeset
|
86 |
+ AC_MSG_RESULT(DLPI) |
417
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
87 |
+ fi |
641
719d637aca9f
7119945 Update Quagga to version 0.99.19
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
417
diff
changeset
|
88 |
+ ISIS_METHOD_MACRO="ISIS_METHOD_DLPI" |
417
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
89 |
+ else |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
90 |
+ AC_MSG_RESULT(BPF) |
641
719d637aca9f
7119945 Update Quagga to version 0.99.19
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
417
diff
changeset
|
91 |
+ ISIS_METHOD_MACRO="ISIS_METHOD_BPF" |
417
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
92 |
+ fi |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
93 |
fi |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
94 |
fi |
641
719d637aca9f
7119945 Update Quagga to version 0.99.19
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
417
diff
changeset
|
95 |
AC_DEFINE_UNQUOTED(ISIS_METHOD, $ISIS_METHOD_MACRO, [ selected method for isis, == one of the constants ]) |
417
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
96 |
diff --git isisd/Makefile.am isisd/Makefile.am |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
97 |
index 859facd..9adcc05 100644 |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
98 |
--- isisd/Makefile.am |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
99 |
+++ isisd/Makefile.am |
641
719d637aca9f
7119945 Update Quagga to version 0.99.19
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
417
diff
changeset
|
100 |
@@ -4,14 +4,15 @@ |
417
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
101 |
@ISIS_TOPOLOGY_INCLUDES@ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
102 |
DEFS = @DEFS@ -DSYSCONFDIR=\"$(sysconfdir)/\" |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
103 |
INSTALL_SDATA=@INSTALL@ -m 600 |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
104 |
-LIBS = @LIBS@ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
105 |
+LIBS = @LIBS@ @ISIS_LIBS@ |
641
719d637aca9f
7119945 Update Quagga to version 0.99.19
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
417
diff
changeset
|
106 |
|
719d637aca9f
7119945 Update Quagga to version 0.99.19
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
417
diff
changeset
|
107 |
AM_CFLAGS = $(PICFLAGS) |
719d637aca9f
7119945 Update Quagga to version 0.99.19
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
417
diff
changeset
|
108 |
AM_LDFLAGS = $(PILDFLAGS) |
719d637aca9f
7119945 Update Quagga to version 0.99.19
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
417
diff
changeset
|
109 |
|
417
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
110 |
noinst_LIBRARIES = libisis.a |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
111 |
-sbin_PROGRAMS = isisd |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
112 |
+sbin_PROGRAMS = @ISIS_TARGETS@ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
113 |
SUBDIRS = topology |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
114 |
+EXTRA_PROGRAMS = isisd trilld |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
115 |
|
641
719d637aca9f
7119945 Update Quagga to version 0.99.19
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
417
diff
changeset
|
116 |
libisis_a_SOURCES = \ |
719d637aca9f
7119945 Update Quagga to version 0.99.19
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
417
diff
changeset
|
117 |
isis_adjacency.c isis_lsp.c dict.c isis_circuit.c isis_pdu.c \ |
719d637aca9f
7119945 Update Quagga to version 0.99.19
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
417
diff
changeset
|
118 |
@@ -25,13 +26,23 @@ |
417
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
119 |
isis_lsp.h dict.h isis_circuit.h isis_misc.h isis_network.h \ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
120 |
isis_zebra.h isis_dr.h isis_flags.h isis_dynhn.h isis_common.h \ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
121 |
iso_checksum.h isis_csm.h isis_events.h isis_spf.h isis_route.h \ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
122 |
+ isis_trill.h \ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
123 |
include-netbsd/clnp.h include-netbsd/esis.h include-netbsd/iso.h |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
124 |
|
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
125 |
isisd_SOURCES = \ |
641
719d637aca9f
7119945 Update Quagga to version 0.99.19
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
417
diff
changeset
|
126 |
isis_main.c $(libisis_a_SOURCES) \ |
719d637aca9f
7119945 Update Quagga to version 0.99.19
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
417
diff
changeset
|
127 |
- isis_bpf.c isis_dlpi.c isis_pfpacket.c |
719d637aca9f
7119945 Update Quagga to version 0.99.19
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
417
diff
changeset
|
128 |
+ isis_bpf.c isis_dlpi.c isis_pfpacket.c isis_trilldummy.c |
719d637aca9f
7119945 Update Quagga to version 0.99.19
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
417
diff
changeset
|
129 |
|
719d637aca9f
7119945 Update Quagga to version 0.99.19
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
417
diff
changeset
|
130 |
-isisd_LDADD = @ISIS_TOPOLOGY_LIB@ ../lib/libzebra.la @LIBCAP@ |
719d637aca9f
7119945 Update Quagga to version 0.99.19
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
417
diff
changeset
|
131 |
+isisd_LDADD = @ISIS_TOPOLOGY_LIB@ ../lib/libzebra.la @LIBCAP@ @LIBM@ |
719d637aca9f
7119945 Update Quagga to version 0.99.19
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
417
diff
changeset
|
132 |
|
417
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
133 |
+trilld_SOURCES = \ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
134 |
+ isis_main.c $(libisis_a_SOURCES) isis_trill.c isis_trillio.c \ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
135 |
+ isis_trillvlans.c isis_trillbpdu.c |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
136 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
137 |
+trilld_LDADD = @ISIS_TOPOLOGY_LIB@ ../lib/libzebra.la @LIBCAP@ @LIBM@ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
138 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
139 |
+EXTRA_DIST = isis_bpf.c isis_dlpi.c isis_pfpacket.c isis_trill.c \ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
140 |
+ isis_trillio.c isis_trillvlans.c isis_trillbpdu.c |
641
719d637aca9f
7119945 Update Quagga to version 0.99.19
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
417
diff
changeset
|
141 |
+ |
417
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
142 |
examplesdir = $(exampledir) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
143 |
dist_examples_DATA = isisd.conf.sample |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
144 |
diff --git isisd/bool.h isisd/bool.h |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
145 |
new file mode 100644 |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
146 |
index 0000000..e713d65 |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
147 |
--- /dev/null |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
148 |
+++ isisd/bool.h |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
149 |
@@ -0,0 +1,25 @@ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
150 |
+/* |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
151 |
+ * IS-IS Rout(e)ing protocol - bool.h |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
152 |
+ * |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
153 |
+ * This program is free software; you can redistribute it and/or modify it |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
154 |
+ * under the terms of the GNU General Public Licenseas published by the Free |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
155 |
+ * Software Foundation; either version 2 of the License, or (at your option) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
156 |
+ * any later version. |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
157 |
+ * |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
158 |
+ * This program is distributed in the hope that it will be useful,but WITHOUT |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
159 |
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
160 |
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
161 |
+ * more details. |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
162 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
163 |
+ * You should have received a copy of the GNU General Public License along |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
164 |
+ * with this program; if not, write to the Free Software Foundation, Inc., |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
165 |
+ * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
166 |
+ */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
167 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
168 |
+#ifndef _ZEBRA_ISIS_BOOL_H |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
169 |
+#define _ZEBRA_ISIS_BOOL_H |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
170 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
171 |
+#define FALSE 0 |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
172 |
+#define TRUE 1 |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
173 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
174 |
+#endif |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
175 |
diff --git isisd/dict.h isisd/dict.h |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
176 |
index 9395d1c..0a5382c 100644 |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
177 |
--- isisd/dict.h |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
178 |
+++ isisd/dict.h |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
179 |
@@ -124,6 +124,11 @@ extern void dict_load_next(dict_load_t *, dnode_t *, const void *); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
180 |
extern void dict_load_end(dict_load_t *); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
181 |
extern void dict_merge(dict_t *, dict_t *); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
182 |
|
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
183 |
+#define ALL_DICT_NODES_RO(D,dnode,data) \ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
184 |
+ (dnode) = dict_first((D)); \ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
185 |
+ (dnode) != NULL && ((data) = dnode_get((dnode)), 1); \ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
186 |
+ (dnode) = dict_next((D),(dnode)) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
187 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
188 |
#if defined(DICT_IMPLEMENTATION) || !defined(KAZLIB_OPAQUE_DEBUG) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
189 |
#ifdef KAZLIB_SIDEEFFECT_DEBUG |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
190 |
#define dict_isfull(D) (SFX_CHECK(D)->dict_nodecount == (D)->dict_maxcount) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
191 |
diff --git isisd/isis_adjacency.c isisd/isis_adjacency.c |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
192 |
index aab8d1a..4b2159b 100644 |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
193 |
--- isisd/isis_adjacency.c |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
194 |
+++ isisd/isis_adjacency.c |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
195 |
@@ -43,6 +43,9 @@ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
196 |
#include "isisd/isis_dr.h" |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
197 |
#include "isisd/isis_dynhn.h" |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
198 |
#include "isisd/isis_pdu.h" |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
199 |
+#include "isisd/isis_tlv.h" |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
200 |
+#include "isisd/isis_lsp.h" |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
201 |
+#include "isisd/isis_vlans.h" |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
202 |
|
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
203 |
extern struct isis *isis; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
204 |
|
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
205 |
@@ -53,6 +56,10 @@ adj_alloc (u_char * id) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
206 |
|
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
207 |
adj = XCALLOC (MTYPE_ISIS_ADJACENCY, sizeof (struct isis_adjacency)); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
208 |
memcpy (adj->sysid, id, ISIS_SYS_ID_LEN); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
209 |
+ adj->lsps = list_new(); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
210 |
+#ifdef HAVE_TRILL |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
211 |
+ adj->vlans = XCALLOC (MTYPE_ISIS_TRILL_ADJVLANS, sizeof (struct trill_adj_vlans)); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
212 |
+#endif |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
213 |
|
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
214 |
return adj; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
215 |
} |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
216 |
@@ -127,6 +134,9 @@ isis_adj_lookup_snpa (u_char * ssnpa, struct list *adjdb) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
217 |
void |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
218 |
isis_delete_adj (struct isis_adjacency *adj, struct list *adjdb) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
219 |
{ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
220 |
+ struct listnode *node; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
221 |
+ struct isis_lsp *lsp; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
222 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
223 |
if (!adj) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
224 |
return; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
225 |
/* When we recieve a NULL list, we will know its p2p. */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
226 |
@@ -141,7 +151,18 @@ isis_delete_adj (struct isis_adjacency *adj, struct list *adjdb) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
227 |
if (adj->ipv6_addrs) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
228 |
list_delete (adj->ipv6_addrs); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
229 |
#endif |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
230 |
- |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
231 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
232 |
+ /* clear adj LSPs list (tracks LSPs recvd from the adj) */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
233 |
+ if (adj->lsps) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
234 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
235 |
+ for (ALL_LIST_ELEMENTS_RO (adj->lsps, node, lsp)) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
236 |
+ lsp->adj = NULL; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
237 |
+ list_delete (adj->lsps); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
238 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
239 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
240 |
+#ifdef HAVE_VLAN |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
241 |
+ XFREE (MTYPE_ISIS_TRILL_ADJVLANS, adj->vlans); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
242 |
+#endif |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
243 |
XFREE (MTYPE_ISIS_ADJACENCY, adj); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
244 |
return; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
245 |
} |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
246 |
@@ -179,6 +200,10 @@ isis_adj_state_change (struct isis_adjacency *adj, enum isis_adj_state state, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
247 |
list_delete_all_node (circuit->u.bc.lan_neighs[level - 1]); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
248 |
isis_adj_build_neigh_list (circuit->u.bc.adjdb[level - 1], |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
249 |
circuit->u.bc.lan_neighs[level - 1]); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
250 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
251 |
+ /* On adjacency state change send new pseudo LSP if we are the DR */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
252 |
+ if (circuit->u.bc.is_dr[level - 1]) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
253 |
+ lsp_pseudo_regenerate (circuit, level); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
254 |
} |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
255 |
else if (state == ISIS_ADJ_UP) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
256 |
{ /* p2p interface */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
257 |
@@ -302,6 +327,11 @@ isis_adj_print_vty2 (struct isis_adjacency *adj, struct vty *vty, char detail) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
258 |
struct isis_dynhn *dyn; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
259 |
int level; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
260 |
struct listnode *node; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
261 |
+#ifdef HAVE_TRILL |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
262 |
+ int vlan_count = 0; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
263 |
+ int vlan_set; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
264 |
+ int vlan; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
265 |
+#endif |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
266 |
|
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
267 |
dyn = dynhn_find_by_id (adj->sysid); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
268 |
if (dyn) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
269 |
@@ -388,6 +418,38 @@ isis_adj_print_vty2 (struct isis_adjacency *adj, struct vty *vty, char detail) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
270 |
} |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
271 |
} |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
272 |
#endif /* HAVE_IPV6 */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
273 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
274 |
+#ifdef HAVE_TRILL |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
275 |
+ vty_out (vty, " Designated VLAN: %d", adj->vlans->designated); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
276 |
+ vty_out (vty, "%s VLAN Forwarder: ", VTY_NEWLINE); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
277 |
+ EACH_VLAN_SET(adj->vlans->forwarder, vlan, vlan_set) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
278 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
279 |
+ vlan_count++; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
280 |
+ if (vlan_count % 8 == 0) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
281 |
+ vty_out(vty, "%s ", VTY_NEWLINE); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
282 |
+ vty_out (vty, "%d ", vlan); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
283 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
284 |
+ vty_out (vty, "%s Enabled VLANs: ", VTY_NEWLINE); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
285 |
+ vlan_count = 0; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
286 |
+ EACH_VLAN_SET(adj->vlans->enabled, vlan, vlan_set) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
287 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
288 |
+ vlan_count++; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
289 |
+ if (vlan_count % 8 == 0) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
290 |
+ vty_out(vty, "%s ", VTY_NEWLINE); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
291 |
+ vty_out (vty, "%d ", vlan); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
292 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
293 |
+ vty_out (vty, "%s Rx VLANs: ", VTY_NEWLINE); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
294 |
+ vlan_count = 0; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
295 |
+ EACH_VLAN_SET(adj->vlans->seen, vlan, vlan_set) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
296 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
297 |
+ vlan_count++; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
298 |
+ if (vlan_count % 8 == 0) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
299 |
+ vty_out(vty, "%s ", VTY_NEWLINE); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
300 |
+ vty_out (vty, "%d ", vlan); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
301 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
302 |
+ vty_out (vty, "%s", VTY_NEWLINE); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
303 |
+#endif /* HAVE_TRILL */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
304 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
305 |
vty_out (vty, "%s", VTY_NEWLINE); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
306 |
} |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
307 |
return; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
308 |
diff --git isisd/isis_adjacency.h isisd/isis_adjacency.h |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
309 |
index 99a8bb2..b966230 100644 |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
310 |
--- isisd/isis_adjacency.h |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
311 |
+++ isisd/isis_adjacency.h |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
312 |
@@ -96,6 +96,11 @@ struct isis_adjacency |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
313 |
int flaps; /* number of adjacency flaps */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
314 |
struct thread *t_expire; /* expire after hold_time */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
315 |
struct isis_circuit *circuit; /* back pointer */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
316 |
+ struct list *lsps; /* LSPs marked with this adjacency */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
317 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
318 |
+#ifdef HAVE_TRILL |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
319 |
+ struct trill_adj_vlans *vlans; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
320 |
+#endif |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
321 |
}; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
322 |
|
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
323 |
struct isis_adjacency *isis_adj_lookup (u_char * sysid, struct list *adjdb); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
324 |
diff --git isisd/isis_circuit.c isisd/isis_circuit.c |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
325 |
index af24988..8de3622 100644 |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
326 |
--- isisd/isis_circuit.c |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
327 |
+++ isisd/isis_circuit.c |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
328 |
@@ -58,6 +58,11 @@ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
329 |
#include "isisd/isis_csm.h" |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
330 |
#include "isisd/isis_events.h" |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
331 |
|
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
332 |
+#ifdef HAVE_TRILL |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
333 |
+#include "isisd/isis_vlans.h" |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
334 |
+#include "isisd/isis_trill.h" |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
335 |
+#endif |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
336 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
337 |
extern struct thread_master *master; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
338 |
extern struct isis *isis; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
339 |
|
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
340 |
@@ -87,6 +92,11 @@ isis_circuit_new () |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
341 |
circuit->metrics[i].metric_delay = METRICS_UNSUPPORTED; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
342 |
circuit->te_metric[i] = DEFAULT_CIRCUIT_METRICS; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
343 |
} |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
344 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
345 |
+#ifdef HAVE_TRILL |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
346 |
+ circuit->vlans = XCALLOC (MTYPE_ISIS_TRILL_VLANS, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
347 |
+ sizeof(struct trill_circuit_vlans)); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
348 |
+#endif |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
349 |
} |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
350 |
else |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
351 |
{ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
352 |
@@ -126,6 +136,13 @@ isis_circuit_configure (struct isis_circuit *circuit, struct isis_area *area) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
353 |
} |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
354 |
circuit->lsp_interval = LSP_INTERVAL; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
355 |
|
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
356 |
+#ifdef HAVE_TRILL |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
357 |
+ circuit->vlans->pvid = DFLT_VLAN; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
358 |
+ circuit->vlans->designated = DFLT_VLAN; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
359 |
+ circuit->vlans->our_designated = DFLT_VLAN; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
360 |
+ SET_VLAN(circuit->vlans->enabled, DFLT_VLAN); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
361 |
+#endif |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
362 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
363 |
/* |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
364 |
* Add the circuit into area |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
365 |
*/ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
366 |
@@ -216,6 +233,26 @@ isis_circuit_del (struct isis_circuit *circuit) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
367 |
list_delete (circuit->ipv6_non_link); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
368 |
#endif /* HAVE_IPV6 */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
369 |
|
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
370 |
+#ifdef HAVE_TRILL |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
371 |
+ if (circuit->vlans != NULL) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
372 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
373 |
+ struct trill_circuit_vlans *cvlans = circuit->vlans; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
374 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
375 |
+ if (cvlans->appvlanfwders != NULL) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
376 |
+ list_delete (cvlans->appvlanfwders); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
377 |
+ if (cvlans->enabled_vlans != NULL) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
378 |
+ list_delete (cvlans->enabled_vlans); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
379 |
+ if (cvlans->inhibit_vlans != NULL) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
380 |
+ list_delete (cvlans->inhibit_vlans); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
381 |
+ if (cvlans->inhibit_thread != NULL) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
382 |
+ thread_cancel (cvlans->inhibit_thread); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
383 |
+ XFREE (MTYPE_ISIS_TRILL_VLANS, cvlans); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
384 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
385 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
386 |
+ if (circuit->tc_thread != NULL) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
387 |
+ thread_cancel (circuit->tc_thread); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
388 |
+#endif |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
389 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
390 |
/* and lastly the circuit itself */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
391 |
XFREE (MTYPE_ISIS_CIRCUIT, circuit); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
392 |
|
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
393 |
@@ -374,7 +411,7 @@ isis_circuit_if_add (struct isis_circuit *circuit, struct interface *ifp) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
394 |
circuit->interface = ifp; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
395 |
ifp->info = circuit; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
396 |
|
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
397 |
- circuit->circuit_id = ifp->ifindex % 255; /* FIXME: Why not ? */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
398 |
+ circuit->circuit_id = (ifp->ifindex % 255) + 1; /* FIXME: Why not ? */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
399 |
|
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
400 |
/* isis_circuit_update_addrs (circuit, ifp); */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
401 |
|
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
402 |
@@ -436,7 +473,7 @@ isis_circuit_update_params (struct isis_circuit *circuit, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
403 |
{ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
404 |
zlog_warn ("changing circuit_id %d->%d", circuit->circuit_id, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
405 |
ifp->ifindex); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
406 |
- circuit->circuit_id = ifp->ifindex % 255; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
407 |
+ circuit->circuit_id = (ifp->ifindex % 255) + 1; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
408 |
} |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
409 |
|
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
410 |
/* FIXME: Why is this needed? shouldn't we compare to the area's mtu */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
411 |
@@ -500,9 +537,10 @@ isis_circuit_if_del (struct isis_circuit *circuit) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
412 |
return; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
413 |
} |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
414 |
|
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
415 |
-void |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
416 |
+int |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
417 |
isis_circuit_up (struct isis_circuit *circuit) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
418 |
{ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
419 |
+ int retv; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
420 |
|
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
421 |
if (circuit->circ_type == CIRCUIT_T_BROADCAST) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
422 |
{ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
423 |
@@ -565,43 +603,57 @@ isis_circuit_up (struct isis_circuit *circuit) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
424 |
isis_jitter (circuit->psnp_interval[1], PSNP_JITTER)); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
425 |
} |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
426 |
|
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
427 |
- /* initialize the circuit streams */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
428 |
+ /* unified init for circuits; ignore warnings below this level */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
429 |
+ retv = isis_sock_init (circuit); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
430 |
+ if (retv == ISIS_ERROR) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
431 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
432 |
+ isis_circuit_down (circuit); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
433 |
+ return retv; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
434 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
435 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
436 |
+ /* initialize the circuit streams after opening connection */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
437 |
if (circuit->rcv_stream == NULL) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
438 |
circuit->rcv_stream = stream_new (ISO_MTU (circuit)); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
439 |
|
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
440 |
if (circuit->snd_stream == NULL) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
441 |
circuit->snd_stream = stream_new (ISO_MTU (circuit)); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
442 |
|
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
443 |
- /* unified init for circuits */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
444 |
- isis_sock_init (circuit); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
445 |
- |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
446 |
-#ifdef GNU_LINUX |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
447 |
+#if defined(GNU_LINUX) || defined(SUNOS_5) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
448 |
THREAD_READ_ON (master, circuit->t_read, isis_receive, circuit, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
449 |
circuit->fd); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
450 |
#else |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
451 |
THREAD_TIMER_ON (master, circuit->t_read, isis_receive, circuit, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
452 |
circuit->fd); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
453 |
#endif |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
454 |
- return; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
455 |
+ return ISIS_OK; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
456 |
} |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
457 |
|
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
458 |
void |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
459 |
isis_circuit_down (struct isis_circuit *circuit) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
460 |
{ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
461 |
/* Cancel all active threads -- FIXME: wrong place */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
462 |
- /* HT: Read thread if GNU_LINUX, TIMER thread otherwise. */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
463 |
+ /* HT: Read thread if GNU_LINUX or SUNOS_5, TIMER thread otherwise. */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
464 |
THREAD_OFF (circuit->t_read); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
465 |
+ THREAD_TIMER_OFF (circuit->t_send_csnp[0]); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
466 |
+ THREAD_TIMER_OFF (circuit->t_send_csnp[1]); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
467 |
+ THREAD_TIMER_OFF (circuit->t_send_psnp[0]); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
468 |
+ THREAD_TIMER_OFF (circuit->t_send_psnp[1]); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
469 |
if (circuit->circ_type == CIRCUIT_T_BROADCAST) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
470 |
{ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
471 |
THREAD_TIMER_OFF (circuit->u.bc.t_send_lan_hello[0]); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
472 |
THREAD_TIMER_OFF (circuit->u.bc.t_send_lan_hello[1]); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
473 |
THREAD_TIMER_OFF (circuit->u.bc.t_run_dr[0]); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
474 |
THREAD_TIMER_OFF (circuit->u.bc.t_run_dr[1]); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
475 |
+ THREAD_TIMER_OFF (circuit->u.bc.t_refresh_pseudo_lsp[0]); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
476 |
+ THREAD_TIMER_OFF (circuit->u.bc.t_refresh_pseudo_lsp[1]); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
477 |
} |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
478 |
else if (circuit->circ_type == CIRCUIT_T_P2P) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
479 |
{ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
480 |
THREAD_TIMER_OFF (circuit->u.p2p.t_send_p2p_hello); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
481 |
} |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
482 |
+#ifdef HAVE_TRILL |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
483 |
+ THREAD_TIMER_OFF (circuit->tc_thread); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
484 |
+#endif |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
485 |
/* close the socket */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
486 |
close (circuit->fd); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
487 |
|
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
488 |
diff --git isisd/isis_circuit.h isisd/isis_circuit.h |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
489 |
index a7e719f..fd26a27 100644 |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
490 |
--- isisd/isis_circuit.h |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
491 |
+++ isisd/isis_circuit.h |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
492 |
@@ -137,6 +137,14 @@ struct isis_circuit |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
493 |
u_int32_t ctrl_pdus_txed; /* controlPDUsSent */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
494 |
u_int32_t desig_changes[2]; /* lanLxDesignatedIntermediateSystemChanges */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
495 |
u_int32_t rej_adjacencies; /* rejectedAdjacencies */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
496 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
497 |
+#ifdef HAVE_TRILL |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
498 |
+ struct trill_circuit_vlans *vlans; /* TRILL VLANs */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
499 |
+ u_int8_t root_bridge[8]; /* STP Root Bridge */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
500 |
+ time_t root_expire; /* time when root expires */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
501 |
+ int tc_count; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
502 |
+ struct thread *tc_thread; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
503 |
+#endif |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
504 |
}; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
505 |
|
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
506 |
void isis_circuit_init (void); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
507 |
@@ -147,7 +155,7 @@ struct isis_circuit *circuit_scan_by_ifp (struct interface *ifp); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
508 |
void isis_circuit_del (struct isis_circuit *circuit); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
509 |
void isis_circuit_configure (struct isis_circuit *circuit, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
510 |
struct isis_area *area); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
511 |
-void isis_circuit_up (struct isis_circuit *circuit); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
512 |
+int isis_circuit_up (struct isis_circuit *circuit); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
513 |
void isis_circuit_deconfigure (struct isis_circuit *circuit, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
514 |
struct isis_area *area); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
515 |
|
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
516 |
diff --git isisd/isis_common.h isisd/isis_common.h |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
517 |
index 2633855..29baf1e 100644 |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
518 |
--- isisd/isis_common.h |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
519 |
+++ isisd/isis_common.h |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
520 |
@@ -21,6 +21,9 @@ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
521 |
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
522 |
*/ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
523 |
|
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
524 |
+#ifndef ISIS_COMMON_H |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
525 |
+#define ISIS_COMMON_H |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
526 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
527 |
/* |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
528 |
* Area Address |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
529 |
*/ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
530 |
@@ -72,3 +75,5 @@ struct flags |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
531 |
int maxindex; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
532 |
struct list *free_idcs; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
533 |
}; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
534 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
535 |
+#endif |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
536 |
diff --git isisd/isis_constants.h isisd/isis_constants.h |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
537 |
index 1b75ba6..50a526c 100644 |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
538 |
--- isisd/isis_constants.h |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
539 |
+++ isisd/isis_constants.h |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
540 |
@@ -102,6 +102,10 @@ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
541 |
#define IS_LEVEL_2 2 |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
542 |
#define IS_LEVEL_1_AND_2 3 |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
543 |
|
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
544 |
+#ifdef HAVE_TRILL |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
545 |
+#define TRILL_ISIS_LEVEL IS_LEVEL_1 /* Use ISIS level 1 for TRILL */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
546 |
+#endif |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
547 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
548 |
#define SNPA_ADDRSTRLEN 18 |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
549 |
#define ISIS_SYS_ID_LEN 6 |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
550 |
#define SYSID_STRLEN 24 |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
551 |
diff --git isisd/isis_csm.c isisd/isis_csm.c |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
552 |
index 80d0c90..c5bb42d 100644 |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
553 |
--- isisd/isis_csm.c |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
554 |
+++ isisd/isis_csm.c |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
555 |
@@ -110,7 +110,11 @@ isis_csm_state_change (int event, struct isis_circuit *circuit, void *arg) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
556 |
{ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
557 |
case ISIS_ENABLE: |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
558 |
isis_circuit_configure (circuit, (struct isis_area *) arg); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
559 |
- isis_circuit_up (circuit); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
560 |
+ if (isis_circuit_up (circuit) != ISIS_OK) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
561 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
562 |
+ isis_circuit_deconfigure (circuit, (struct isis_area *) arg); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
563 |
+ break; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
564 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
565 |
circuit->state = C_STATE_UP; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
566 |
isis_event_circuit_state_change (circuit, 1); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
567 |
listnode_delete (isis->init_circ_list, circuit); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
568 |
@@ -137,7 +141,11 @@ isis_csm_state_change (int event, struct isis_circuit *circuit, void *arg) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
569 |
break; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
570 |
case IF_UP_FROM_Z: |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
571 |
isis_circuit_if_add (circuit, (struct interface *) arg); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
572 |
- isis_circuit_up (circuit); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
573 |
+ if (isis_circuit_up (circuit) != ISIS_OK) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
574 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
575 |
+ isis_circuit_if_del (circuit); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
576 |
+ break; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
577 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
578 |
circuit->state = C_STATE_UP; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
579 |
isis_event_circuit_state_change (circuit, 1); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
580 |
break; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
581 |
@@ -161,12 +169,14 @@ isis_csm_state_change (int event, struct isis_circuit *circuit, void *arg) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
582 |
zlog_warn ("circuit already connected"); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
583 |
break; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
584 |
case ISIS_DISABLE: |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
585 |
+ isis_circuit_down (circuit); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
586 |
isis_circuit_deconfigure (circuit, (struct isis_area *) arg); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
587 |
listnode_add (isis->init_circ_list, circuit); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
588 |
circuit->state = C_STATE_INIT; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
589 |
isis_event_circuit_state_change (circuit, 0); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
590 |
break; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
591 |
case IF_DOWN_FROM_Z: |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
592 |
+ isis_circuit_down (circuit); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
593 |
isis_circuit_if_del (circuit); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
594 |
circuit->state = C_STATE_CONF; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
595 |
isis_event_circuit_state_change (circuit, 0); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
596 |
diff --git isisd/isis_dlpi.c isisd/isis_dlpi.c |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
597 |
index 07ab547..5837201 100644 |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
598 |
--- isisd/isis_dlpi.c |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
599 |
+++ isisd/isis_dlpi.c |
641
719d637aca9f
7119945 Update Quagga to version 0.99.19
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
417
diff
changeset
|
600 |
@@ -21,6 +21,7 @@ |
417
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
601 |
*/ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
602 |
|
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
603 |
#include <zebra.h> |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
604 |
+#include <vty.h> |
641
719d637aca9f
7119945 Update Quagga to version 0.99.19
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
417
diff
changeset
|
605 |
#if ISIS_METHOD == ISIS_METHOD_DLPI |
417
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
606 |
#include <net/if.h> |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
607 |
#include <netinet/if_ether.h> |
641
719d637aca9f
7119945 Update Quagga to version 0.99.19
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
417
diff
changeset
|
608 |
@@ -302,7 +303,7 @@ |
417
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
609 |
static int |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
610 |
open_dlpi_dev (struct isis_circuit *circuit) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
611 |
{ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
612 |
- int fd, unit, retval; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
613 |
+ int fd = -1, unit, retval; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
614 |
char devpath[MAXPATHLEN]; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
615 |
dl_info_ack_t *dia = (dl_info_ack_t *)dlpi_ctl; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
616 |
ssize_t acklen; |
641
719d637aca9f
7119945 Update Quagga to version 0.99.19
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
417
diff
changeset
|
617 |
@@ -314,20 +315,21 @@ |
417
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
618 |
circuit->interface->name); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
619 |
return ISIS_WARNING; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
620 |
} |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
621 |
- |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
622 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
623 |
+ /* Try first as Style 1 */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
624 |
/* Try the vanity node first, if permitted */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
625 |
if (getenv("DLPI_DEVONLY") == NULL) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
626 |
{ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
627 |
- (void) snprintf (devpath, sizeof(devpath), "/dev/net/%s", |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
628 |
- circuit->interface->name); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
629 |
- fd = dlpiopen (devpath, &acklen); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
630 |
+ (void) snprintf(devpath, sizeof(devpath), "/dev/net/%s", |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
631 |
+ circuit->interface->name); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
632 |
+ fd = dlpiopen(devpath, &acklen); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
633 |
} |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
634 |
- |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
635 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
636 |
/* Now try as an ordinary Style 1 node */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
637 |
if (fd == -1) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
638 |
{ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
639 |
- (void) snprintf (devpath, sizeof (devpath), "/dev/%s", |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
640 |
- circuit->interface->name); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
641 |
+ (void) snprintf(devpath, sizeof (devpath), "/dev/%s", |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
642 |
+ circuit->interface->name); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
643 |
unit = -1; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
644 |
fd = dlpiopen (devpath, &acklen); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
645 |
} |
641
719d637aca9f
7119945 Update Quagga to version 0.99.19
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
417
diff
changeset
|
646 |
@@ -403,8 +405,8 @@ |
417
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
647 |
case DL_100BT: |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
648 |
break; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
649 |
default: |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
650 |
- zlog_warn ("%s: unexpected mac type on %s: %d", __func__, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
651 |
- circuit->interface->name, dia->dl_mac_type); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
652 |
+ zlog_warn ("%s: unexpected mac type on %s: %ld", __func__, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
653 |
+ circuit->interface->name, (u_long)dia->dl_mac_type); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
654 |
close (fd); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
655 |
return ISIS_WARNING; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
656 |
} |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
657 |
diff --git isisd/isis_dr.c isisd/isis_dr.c |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
658 |
index 8d306c8..a481142 100644 |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
659 |
--- isisd/isis_dr.c |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
660 |
+++ isisd/isis_dr.c |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
661 |
@@ -207,17 +207,16 @@ isis_dr_elect (struct isis_circuit *circuit, int level) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
662 |
|| (adj_dr->prio[level - 1] == own_prio |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
663 |
&& memcmp (adj_dr->snpa, circuit->u.bc.snpa, ETH_ALEN) < 0)) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
664 |
{ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
665 |
- if (!circuit->u.bc.is_dr[level - 1]) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
666 |
- { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
667 |
- /* |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
668 |
- * We are the DR |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
669 |
- */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
670 |
+ adj_dr->dis_record[level - 1].dis = ISIS_IS_NOT_DIS; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
671 |
+ adj_dr->dis_record[level - 1].last_dis_change = time (NULL); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
672 |
|
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
673 |
- /* rotate the history log */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
674 |
- for (ALL_LIST_ELEMENTS_RO (list, node, adj)) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
675 |
- isis_check_dr_change (adj, level); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
676 |
+ /* rotate the history log */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
677 |
+ for (ALL_LIST_ELEMENTS_RO (list, node, adj)) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
678 |
+ isis_check_dr_change (adj, level); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
679 |
|
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
680 |
- /* commence */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
681 |
+ if (!circuit->u.bc.is_dr[level - 1]) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
682 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
683 |
+ /* We are the DR, commence DR */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
684 |
list_delete (list); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
685 |
return isis_dr_commence (circuit, level); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
686 |
} |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
687 |
diff --git isisd/isis_flags.h isisd/isis_flags.h |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
688 |
index 13dd9e1..4346eb7 100644 |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
689 |
--- isisd/isis_flags.h |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
690 |
+++ isisd/isis_flags.h |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
691 |
@@ -27,6 +27,7 @@ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
692 |
/* The grand plan is to support 1024 circuits so we have 32*32 bit flags |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
693 |
* the support will be achived using the newest drafts */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
694 |
#define ISIS_MAX_CIRCUITS 32 /* = 1024 */ /*FIXME:defined in lsp.h as well */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
695 |
+#define ISIS_MAX_CIRCUITS_COUNT 32 * ISIS_MAX_CIRCUITS /* total count of max circuits */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
696 |
|
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
697 |
void flags_initialize (struct flags *flags); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
698 |
struct flags *new_flags (int size); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
699 |
diff --git isisd/isis_lsp.c isisd/isis_lsp.c |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
700 |
index 48e3147..53430a7 100644 |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
701 |
--- isisd/isis_lsp.c |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
702 |
+++ isisd/isis_lsp.c |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
703 |
@@ -38,17 +38,22 @@ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
704 |
#include "isisd/dict.h" |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
705 |
#include "isisd/isis_constants.h" |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
706 |
#include "isisd/isis_common.h" |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
707 |
+#include "isisd/isis_flags.h" |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
708 |
#include "isisd/isis_circuit.h" |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
709 |
-#include "isisd/isisd.h" |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
710 |
#include "isisd/isis_tlv.h" |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
711 |
#include "isisd/isis_lsp.h" |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
712 |
+#ifdef HAVE_TRILL |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
713 |
+#include "isisd/isis_vlans.h" |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
714 |
+#include "isisd/isis_trill.h" |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
715 |
+#endif |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
716 |
+#include "isisd/isisd.h" |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
717 |
#include "isisd/isis_pdu.h" |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
718 |
#include "isisd/isis_dynhn.h" |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
719 |
#include "isisd/isis_misc.h" |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
720 |
-#include "isisd/isis_flags.h" |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
721 |
#include "isisd/isis_csm.h" |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
722 |
#include "isisd/isis_adjacency.h" |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
723 |
#include "isisd/isis_spf.h" |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
724 |
+#include "isisd/bool.h" |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
725 |
|
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
726 |
#ifdef TOPOLOGY_GENERATE |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
727 |
#include "spgrid.h" |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
728 |
@@ -138,18 +143,34 @@ lsp_clear_data (struct isis_lsp *lsp) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
729 |
if (lsp->tlv_data.ipv6_reachs) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
730 |
list_delete (lsp->tlv_data.ipv6_reachs); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
731 |
#endif /* HAVE_IPV6 */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
732 |
+ if (lsp->tlv_data.router_capabilities) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
733 |
+ list_delete (lsp->tlv_data.router_capabilities); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
734 |
|
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
735 |
memset (&lsp->tlv_data, 0, sizeof (struct tlvs)); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
736 |
|
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
737 |
return; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
738 |
} |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
739 |
|
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
740 |
+/* |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
741 |
+ * clearnick is set by callers to indicate it is |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
742 |
+ * also safe to clear any nickname that was learnt from |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
743 |
+ * the LSP. LSP purge case is safe but LSP destroyed before |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
744 |
+ * replaced by a new LSP from the other RBridge is not. |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
745 |
+ */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
746 |
static void |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
747 |
-lsp_destroy (struct isis_lsp *lsp) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
748 |
+lsp_destroy (struct isis_lsp *lsp, int clearnick) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
749 |
{ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
750 |
if (!lsp) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
751 |
return; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
752 |
|
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
753 |
+#ifdef HAVE_TRILL |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
754 |
+ if (clearnick) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
755 |
+ trill_nick_destroy(lsp); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
756 |
+#endif |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
757 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
758 |
+ if (lsp->adj != NULL && lsp->adj->lsps != NULL) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
759 |
+ listnode_delete(lsp->adj->lsps, lsp); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
760 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
761 |
lsp_clear_data (lsp); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
762 |
|
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
763 |
if (LSP_FRAGMENT (lsp->lsp_header->lsp_id) == 0 && lsp->lspu.frags) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
764 |
@@ -173,7 +194,7 @@ lsp_db_destroy (dict_t * lspdb) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
765 |
{ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
766 |
next = dict_next (lspdb, dnode); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
767 |
lsp = dnode_get (dnode); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
768 |
- lsp_destroy (lsp); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
769 |
+ lsp_destroy (lsp, TRUE); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
770 |
dict_delete_free (lspdb, dnode); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
771 |
dnode = next; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
772 |
} |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
773 |
@@ -187,7 +208,7 @@ lsp_db_destroy (dict_t * lspdb) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
774 |
* Remove all the frags belonging to the given lsp |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
775 |
*/ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
776 |
static void |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
777 |
-lsp_remove_frags (struct list *frags, dict_t * lspdb) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
778 |
+lsp_remove_frags (struct list *frags, dict_t * lspdb, int clearnick) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
779 |
{ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
780 |
dnode_t *dnode; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
781 |
struct listnode *lnode, *lnnode; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
782 |
@@ -196,7 +217,7 @@ lsp_remove_frags (struct list *frags, dict_t * lspdb) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
783 |
for (ALL_LIST_ELEMENTS (frags, lnode, lnnode, lsp)) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
784 |
{ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
785 |
dnode = dict_lookup (lspdb, lsp->lsp_header->lsp_id); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
786 |
- lsp_destroy (lsp); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
787 |
+ lsp_destroy (lsp, clearnick); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
788 |
dnode_destroy (dict_delete (lspdb, dnode)); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
789 |
} |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
790 |
|
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
791 |
@@ -222,7 +243,7 @@ lsp_search_and_destroy (u_char * id, dict_t * lspdb) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
792 |
if (LSP_FRAGMENT (lsp->lsp_header->lsp_id) == 0) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
793 |
{ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
794 |
if (lsp->lspu.frags) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
795 |
- lsp_remove_frags (lsp->lspu.frags, lspdb); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
796 |
+ lsp_remove_frags (lsp->lspu.frags, lspdb, FALSE); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
797 |
} |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
798 |
else |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
799 |
{ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
800 |
@@ -232,7 +253,7 @@ lsp_search_and_destroy (u_char * id, dict_t * lspdb) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
801 |
if (lsp->lspu.zero_lsp && lsp->lspu.zero_lsp->lspu.frags) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
802 |
listnode_delete (lsp->lspu.zero_lsp->lspu.frags, lsp); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
803 |
} |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
804 |
- lsp_destroy (lsp); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
805 |
+ lsp_destroy (lsp, FALSE); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
806 |
dnode_destroy (node); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
807 |
} |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
808 |
} |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
809 |
@@ -314,7 +335,7 @@ lsp_inc_seqnum (struct isis_lsp *lsp, u_int32_t seq_num) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
810 |
newseq = seq_num++; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
811 |
|
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
812 |
lsp->lsp_header->seq_num = htonl (newseq); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
813 |
- fletcher_checksum (STREAM_DATA (lsp->pdu) + 12, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
814 |
+ fletcher_checksum(STREAM_DATA (lsp->pdu) + 12, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
815 |
ntohs (lsp->lsp_header->pdu_len) - 12, 12); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
816 |
|
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
817 |
return; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
818 |
@@ -367,6 +388,8 @@ lsp_update_data (struct isis_lsp *lsp, struct stream *stream, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
819 |
int retval; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
820 |
|
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
821 |
/* copying only the relevant part of our stream */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
822 |
+ if (lsp->pdu != NULL) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
823 |
+ stream_free (lsp->pdu); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
824 |
lsp->pdu = stream_dup (stream); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
825 |
|
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
826 |
/* setting pointers to the correct place */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
827 |
@@ -414,6 +437,10 @@ lsp_update_data (struct isis_lsp *lsp, struct stream *stream, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
828 |
(lsp->lsp_header->lsp_bits & LSPBIT_IST)); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
829 |
} |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
830 |
|
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
831 |
+#ifdef HAVE_TRILL |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
832 |
+ if (isis->trill_active) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
833 |
+ trill_parse_router_capability_tlvs (area, lsp); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
834 |
+#endif |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
835 |
} |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
836 |
|
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
837 |
void |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
838 |
@@ -428,7 +455,6 @@ lsp_update (struct isis_lsp *lsp, struct isis_link_state_hdr *lsp_hdr, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
839 |
dnode_destroy (dict_delete (area->lspdb[level - 1], dnode)); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
840 |
|
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
841 |
/* free the old lsp data */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
842 |
- XFREE (MTYPE_STREAM_DATA, lsp->pdu); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
843 |
lsp_clear_data (lsp); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
844 |
|
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
845 |
/* rebuild the lsp data */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
846 |
@@ -852,11 +878,9 @@ lsp_print_detail (dnode_t * node, struct vty *vty, char dynhost) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
847 |
if (lsp->tlv_data.te_is_neighs) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
848 |
for (ALL_LIST_ELEMENTS_RO (lsp->tlv_data.te_is_neighs, lnode, te_is_neigh)) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
849 |
{ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
850 |
- uint32_t metric; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
851 |
- memcpy (&metric, te_is_neigh->te_metric, 3); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
852 |
lspid_print (te_is_neigh->neigh_id, LSPid, dynhost, 0); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
853 |
vty_out (vty, " Metric: %-10d IS-Extended %s%s", |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
854 |
- ntohl (metric << 8), LSPid, VTY_NEWLINE); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
855 |
+ GET_TE_METRIC(te_is_neigh), LSPid, VTY_NEWLINE); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
856 |
} |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
857 |
|
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
858 |
/* TE IPv4 tlv */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
859 |
@@ -933,16 +957,32 @@ lsp_tlv_fit (struct isis_lsp *lsp, struct list **from, struct list **to, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
860 |
if (!FRAG_NEEDED (lsp->pdu, frag_thold, listcount (*from) * tlvsize + 2)) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
861 |
{ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
862 |
tlv_build_func (*from, lsp->pdu); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
863 |
- *to = *from; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
864 |
- *from = NULL; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
865 |
+ if (listcount (*to) != 0) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
866 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
867 |
+ struct listnode *node, *nextnode; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
868 |
+ void *elem; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
869 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
870 |
+ for (ALL_LIST_ELEMENTS (*from, node, nextnode, elem)) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
871 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
872 |
+ listnode_add (*to, elem); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
873 |
+ list_delete_node (*from, node); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
874 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
875 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
876 |
+ else |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
877 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
878 |
+ list_free (*to); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
879 |
+ *to = *from; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
880 |
+ *from = NULL; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
881 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
882 |
} |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
883 |
else if (!FRAG_NEEDED (lsp->pdu, frag_thold, tlvsize + 2)) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
884 |
{ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
885 |
/* fit all we can */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
886 |
count = FRAG_THOLD (lsp->pdu, frag_thold) - 2 - |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
887 |
(STREAM_SIZE (lsp->pdu) - STREAM_REMAIN (lsp->pdu)); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
888 |
- if (count) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
889 |
- count = count / tlvsize; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
890 |
+ count = count / tlvsize; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
891 |
+ if (count > (int)listcount (*from)) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
892 |
+ count = listcount (*from); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
893 |
for (i = 0; i < count; i++) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
894 |
{ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
895 |
listnode_add (*to, listgetdata (listhead (*from))); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
896 |
@@ -972,7 +1012,7 @@ lsp_next_frag (u_char frag_num, struct isis_lsp *lsp0, struct isis_area *area, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
897 |
lsp_clear_data (lsp); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
898 |
if (lsp0->tlv_data.auth_info.type) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
899 |
{ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
900 |
- memcpy (&lsp->tlv_data.auth_info, &lsp->tlv_data.auth_info, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
901 |
+ memcpy (&lsp->tlv_data.auth_info, &lsp0->tlv_data.auth_info, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
902 |
sizeof (struct isis_passwd)); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
903 |
tlv_add_authinfo (lsp->tlv_data.auth_info.type, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
904 |
lsp->tlv_data.auth_info.len, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
905 |
@@ -991,7 +1031,7 @@ lsp_next_frag (u_char frag_num, struct isis_lsp *lsp0, struct isis_area *area, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
906 |
*/ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
907 |
if (lsp0->tlv_data.auth_info.type) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
908 |
{ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
909 |
- memcpy (&lsp->tlv_data.auth_info, &lsp->tlv_data.auth_info, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
910 |
+ memcpy (&lsp->tlv_data.auth_info, &lsp0->tlv_data.auth_info, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
911 |
sizeof (struct isis_passwd)); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
912 |
tlv_add_authinfo (lsp->tlv_data.auth_info.type, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
913 |
lsp->tlv_data.auth_info.len, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
914 |
@@ -1094,6 +1134,11 @@ lsp_build_nonpseudo (struct isis_lsp *lsp, struct isis_area *area) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
915 |
if (lsp->tlv_data.area_addrs && listcount (lsp->tlv_data.area_addrs) > 0) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
916 |
tlv_add_area_addrs (lsp->tlv_data.area_addrs, lsp->pdu); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
917 |
|
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
918 |
+#ifdef HAVE_TRILL |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
919 |
+ if (isis->trill_active && CHECK_FLAG (area->trill->status, TRILL_NICK_SET)) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
920 |
+ tlv_add_trill_nickname (&(area->trill->nick), lsp->pdu, area); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
921 |
+#endif |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
922 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
923 |
/* IPv4 address and TE router ID TLVs. In case of the first one we don't |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
924 |
* follow "C" vendor, but "J" vendor behavior - one IPv4 address is put into |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
925 |
* LSP and this address is same as router id. */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
926 |
@@ -1281,13 +1326,11 @@ lsp_build_nonpseudo (struct isis_lsp *lsp, struct isis_area *area) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
927 |
memcpy (te_is_neigh->neigh_id, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
928 |
circuit->u.bc.l2_desig_is, ISIS_SYS_ID_LEN + 1); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
929 |
if (area->oldmetric) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
930 |
- metric = |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
931 |
- ((htonl(circuit->metrics[level - 1].metric_default) >> 8) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
932 |
- & 0xffffff); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
933 |
+ metric = circuit->metrics[level - 1].metric_default; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
934 |
else |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
935 |
- metric = ((htonl(*circuit->te_metric) >> 8) & 0xffffff); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
936 |
+ metric = circuit->te_metric[level - 1]; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
937 |
|
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
938 |
- memcpy (te_is_neigh->te_metric, &metric, 3); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
939 |
+ SET_TE_METRIC(te_is_neigh, metric); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
940 |
listnode_add (tlv_data.te_is_neighs, te_is_neigh); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
941 |
} |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
942 |
} |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
943 |
@@ -1320,8 +1363,8 @@ lsp_build_nonpseudo (struct isis_lsp *lsp, struct isis_area *area) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
944 |
te_is_neigh = XCALLOC (MTYPE_ISIS_TLV, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
945 |
sizeof (struct te_is_neigh)); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
946 |
memcpy (te_is_neigh->neigh_id, nei->sysid, ISIS_SYS_ID_LEN); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
947 |
- metric = ((htonl(*circuit->te_metric) >> 8) & 0xffffff); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
948 |
- memcpy (te_is_neigh->te_metric, &metric, 3); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
949 |
+ metric = circuit->te_metric[level - 1]; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
950 |
+ SET_TE_METRIC(te_is_neigh, metric); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
951 |
listnode_add (tlv_data.te_is_neighs, te_is_neigh); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
952 |
} |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
953 |
} |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
954 |
@@ -1539,6 +1582,10 @@ lsp_non_pseudo_regenerate (struct isis_area *area, int level) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
955 |
if (area->ipv6_circuits) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
956 |
isis_spf_schedule6 (area, level); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
957 |
#endif |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
958 |
+#ifdef HAVE_TRILL |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
959 |
+ if (isis->trill_active) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
960 |
+ isis_spf_schedule_trill (area); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
961 |
+#endif |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
962 |
return ISIS_OK; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
963 |
} |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
964 |
|
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
965 |
@@ -1803,7 +1850,7 @@ lsp_build_pseudo (struct isis_lsp *lsp, struct isis_circuit *circuit, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
966 |
tlv_add_is_neighs (lsp->tlv_data.es_neighs, lsp->pdu); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
967 |
|
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
968 |
lsp->lsp_header->pdu_len = htons (stream_get_endp (lsp->pdu)); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
969 |
- fletcher_checksum (STREAM_DATA (lsp->pdu) + 12, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
970 |
+ fletcher_checksum(STREAM_DATA (lsp->pdu) + 12, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
971 |
ntohs (lsp->lsp_header->pdu_len) - 12, 12); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
972 |
|
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
973 |
list_delete (adj_list); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
974 |
@@ -1811,7 +1858,7 @@ lsp_build_pseudo (struct isis_lsp *lsp, struct isis_circuit *circuit, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
975 |
return; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
976 |
} |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
977 |
|
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
978 |
-static int |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
979 |
+int |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
980 |
lsp_pseudo_regenerate (struct isis_circuit *circuit, int level) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
981 |
{ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
982 |
dict_t *lspdb = circuit->area->lspdb[level - 1]; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
983 |
@@ -2022,8 +2069,8 @@ lsp_tick (struct thread *thread) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
984 |
if (lsp->from_topology) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
985 |
THREAD_TIMER_OFF (lsp->t_lsp_top_ref); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
986 |
#endif /* TOPOLOGY_GENERATE */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
987 |
- lsp_destroy (lsp); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
988 |
- dict_delete (area->lspdb[level], dnode); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
989 |
+ lsp_destroy (lsp, TRUE); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
990 |
+ dict_delete_free (area->lspdb[level], dnode); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
991 |
} |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
992 |
else if (flags_any_set (lsp->SRMflags)) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
993 |
listnode_add (lsp_list, lsp); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
994 |
@@ -2071,7 +2118,7 @@ lsp_purge_dr (u_char * id, struct isis_circuit *circuit, int level) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
995 |
lsp->lsp_header->pdu_len = |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
996 |
htons (ISIS_FIXED_HDR_LEN + ISIS_LSP_HDR_LEN); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
997 |
lsp->purged = 0; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
998 |
- fletcher_checksum (STREAM_DATA (lsp->pdu) + 12, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
999 |
+ fletcher_checksum(STREAM_DATA (lsp->pdu) + 12, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1000 |
ntohs (lsp->lsp_header->pdu_len) - 12, 12); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1001 |
ISIS_FLAGS_SET_ALL (lsp->SRMflags); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1002 |
} |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1003 |
@@ -2227,7 +2274,7 @@ remove_topology_lsps (struct isis_area *area) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1004 |
if (lsp->from_topology) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1005 |
{ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1006 |
THREAD_TIMER_OFF (lsp->t_lsp_top_ref); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1007 |
- lsp_destroy (lsp); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1008 |
+ lsp_destroy (lsp, TRUE); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1009 |
dict_delete (area->lspdb[0], dnode); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1010 |
} |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1011 |
dnode = dnode_next; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1012 |
@@ -2325,8 +2372,6 @@ build_topology_lsp_data (struct isis_lsp *lsp, struct isis_area *area, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1013 |
|
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1014 |
if (area->newmetric) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1015 |
{ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1016 |
- uint32_t metric; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1017 |
- |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1018 |
if (tlv_data.te_is_neighs == NULL) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1019 |
{ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1020 |
tlv_data.te_is_neighs = list_new (); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1021 |
@@ -2337,8 +2382,7 @@ build_topology_lsp_data (struct isis_lsp *lsp, struct isis_area *area, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1022 |
ISIS_SYS_ID_LEN); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1023 |
te_is_neigh->neigh_id[ISIS_SYS_ID_LEN - 1] = (to_lsp & 0xFF); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1024 |
te_is_neigh->neigh_id[ISIS_SYS_ID_LEN - 2] = ((to_lsp >> 8) & 0xFF); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1025 |
- metric = ((htonl(arc->distance) >> 8) & 0xffffff); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1026 |
- memcpy (te_is_neigh->te_metric, &metric, 3); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1027 |
+ SET_TE_METRIC(te_is_neigh, arc->distance); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1028 |
listnode_add (tlv_data.te_is_neighs, te_is_neigh); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1029 |
} |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1030 |
} |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1031 |
diff --git isisd/isis_lsp.h isisd/isis_lsp.h |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1032 |
index adbde78..4112681 100644 |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1033 |
--- isisd/isis_lsp.h |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1034 |
+++ isisd/isis_lsp.h |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1035 |
@@ -74,6 +74,7 @@ int lsp_refresh_l1 (struct thread *thread); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1036 |
int lsp_refresh_l2 (struct thread *thread); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1037 |
int lsp_regenerate_schedule (struct isis_area *area); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1038 |
|
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1039 |
+int lsp_pseudo_regenerate (struct isis_circuit *circuit, int level); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1040 |
int lsp_l1_pseudo_generate (struct isis_circuit *circuit); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1041 |
int lsp_l2_pseudo_generate (struct isis_circuit *circuit); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1042 |
int lsp_l1_refresh_pseudo (struct thread *thread); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1043 |
diff --git isisd/isis_main.c isisd/isis_main.c |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1044 |
index 2411518..a75281d 100644 |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1045 |
--- isisd/isis_main.c |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1046 |
+++ isisd/isis_main.c |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1047 |
@@ -43,6 +43,14 @@ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1048 |
#include "isisd/isis_circuit.h" |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1049 |
#include "isisd/isisd.h" |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1050 |
#include "isisd/isis_dynhn.h" |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1051 |
+#include "isisd/isis_spf.h" |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1052 |
+#include "isisd/isis_route.h" |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1053 |
+#include "isisd/isis_zebra.h" |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1054 |
+#ifdef HAVE_TRILL |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1055 |
+#include "isisd/isis_tlv.h" |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1056 |
+#include "isisd/isis_vlans.h" |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1057 |
+#include "isisd/isis_trill.h" |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1058 |
+#endif |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1059 |
|
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1060 |
/* Default configuration file name */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1061 |
#define ISISD_DEFAULT_CONFIG "isisd.conf" |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1062 |
@@ -51,8 +59,12 @@ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1063 |
|
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1064 |
/* isisd privileges */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1065 |
zebra_capabilities_t _caps_p[] = { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1066 |
+#ifdef HAVE_TRILL |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1067 |
+ ZCAP_DL_CONFIG, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1068 |
+#endif |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1069 |
ZCAP_NET_RAW, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1070 |
- ZCAP_BIND |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1071 |
+ ZCAP_BIND, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1072 |
+ ZCAP_EXEC |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1073 |
}; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1074 |
|
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1075 |
struct zebra_privs_t isisd_privs = { |
641
719d637aca9f
7119945 Update Quagga to version 0.99.19
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
417
diff
changeset
|
1076 |
@@ -66,7 +78,7 @@ |
417
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1077 |
.vty_group = VTY_GROUP, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1078 |
#endif |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1079 |
.caps_p = _caps_p, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1080 |
- .cap_num_p = 2, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1081 |
+ .cap_num_p = sizeof (_caps_p) / sizeof (*_caps_p), |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1082 |
.cap_num_i = 0 |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1083 |
}; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1084 |
|
641
719d637aca9f
7119945 Update Quagga to version 0.99.19
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
417
diff
changeset
|
1085 |
@@ -151,7 +163,10 @@ |
417
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1086 |
zlog_debug ("Reload"); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1087 |
/* FIXME: Clean up func call here */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1088 |
vty_reset (); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1089 |
+ (void) isisd_privs.change (ZPRIVS_RAISE); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1090 |
execve (_progpath, _argv, _envp); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1091 |
+ zlog_err ("Reload failed: cannot exec %s: %s", _progpath, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1092 |
+ safe_strerror (errno)); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1093 |
} |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1094 |
|
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1095 |
static void |
641
719d637aca9f
7119945 Update Quagga to version 0.99.19
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
417
diff
changeset
|
1096 |
@@ -168,6 +183,9 @@ |
417
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1097 |
sighup (void) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1098 |
{ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1099 |
zlog_debug ("SIGHUP received"); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1100 |
+#ifdef HAVE_TRILL |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1101 |
+ if (!trill_reload()) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1102 |
+#endif |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1103 |
reload (); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1104 |
|
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1105 |
return; |
641
719d637aca9f
7119945 Update Quagga to version 0.99.19
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
417
diff
changeset
|
1106 |
@@ -227,6 +245,11 @@ |
417
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1107 |
char *vty_addr = NULL; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1108 |
int dryrun = 0; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1109 |
|
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1110 |
+#if defined(__sparc) && __GNUC__ == 3 |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1111 |
+ /* work around alignment problems in gcc 3.x on SPARC */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1112 |
+ asm("ta\t6"); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1113 |
+#endif |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1114 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1115 |
/* Get the programname without the preceding path. */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1116 |
progname = ((p = strrchr (argv[0], '/')) ? ++p : argv[0]); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1117 |
|
641
719d637aca9f
7119945 Update Quagga to version 0.99.19
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
417
diff
changeset
|
1118 |
@@ -319,6 +342,22 @@ |
417
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1119 |
memory_init (); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1120 |
access_list_init(); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1121 |
isis_init (); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1122 |
+ isis_circuit_init (); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1123 |
+ isis_spf_cmds_init (); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1124 |
+#ifdef HAVE_TRILL |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1125 |
+ install_trill_elements (); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1126 |
+#endif |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1127 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1128 |
+ /* create the global 'isis' instance */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1129 |
+ isis_new (0); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1130 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1131 |
+#ifdef HAVE_TRILL |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1132 |
+ trill_read_config (&config_file, argc, argv); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1133 |
+ /* we use the routing socket (zebra) only if TRILL is not enabled */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1134 |
+ if (!isis->trill_active) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1135 |
+#endif |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1136 |
+ isis_zebra_init (); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1137 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1138 |
dyn_cache_init (); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1139 |
sort_node (); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1140 |
|
641
719d637aca9f
7119945 Update Quagga to version 0.99.19
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
417
diff
changeset
|
1141 |
@@ -340,7 +379,8 @@ |
719d637aca9f
7119945 Update Quagga to version 0.99.19
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
417
diff
changeset
|
1142 |
} |
417
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1143 |
|
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1144 |
/* Process ID file creation. */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1145 |
- pid_output (pid_file); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1146 |
+ if (pid_file[0] != '\0') |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1147 |
+ pid_output (pid_file); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1148 |
|
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1149 |
/* Make isis vty socket. */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1150 |
vty_serv_sock (vty_addr, vty_port, ISIS_VTYSH_PATH); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1151 |
diff --git isisd/isis_misc.c isisd/isis_misc.c |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1152 |
index 6b565bc..dbfb601 100644 |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1153 |
--- isisd/isis_misc.c |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1154 |
+++ isisd/isis_misc.c |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1155 |
@@ -29,6 +29,7 @@ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1156 |
#include "if.h" |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1157 |
#include "command.h" |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1158 |
|
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1159 |
+#include "isisd/bool.h" |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1160 |
#include "isisd/dict.h" |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1161 |
#include "isisd/isis_constants.h" |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1162 |
#include "isisd/isis_common.h" |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1163 |
@@ -38,8 +39,12 @@ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1164 |
|
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1165 |
#include "isisd/isis_tlv.h" |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1166 |
#include "isisd/isis_lsp.h" |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1167 |
+#include "isisd/isis_flags.h" |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1168 |
+#include "isisd/isis_vlans.h" |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1169 |
+#include "isisd/isis_trill.h" |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1170 |
#include "isisd/isis_constants.h" |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1171 |
#include "isisd/isis_adjacency.h" |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1172 |
+#include "isisd/isis_dynhn.h" |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1173 |
|
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1174 |
/* staticly assigned vars for printing purposes */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1175 |
struct in_addr new_prefix; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1176 |
@@ -99,10 +104,10 @@ isonet_print (u_char * from, int len) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1177 |
* extract dot from the dotted str, and insert all the number in a buff |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1178 |
*/ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1179 |
int |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1180 |
-dotformat2buff (u_char * buff, const u_char * dotted) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1181 |
+dotformat2buff (u_char * buff, const char * dotted) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1182 |
{ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1183 |
int dotlen, len = 0; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1184 |
- const u_char *pos = dotted; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1185 |
+ const char *pos = dotted; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1186 |
u_char number[3]; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1187 |
int nextdotpos = 2; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1188 |
|
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1189 |
@@ -157,10 +162,10 @@ dotformat2buff (u_char * buff, const u_char * dotted) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1190 |
* conversion of XXXX.XXXX.XXXX to memory |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1191 |
*/ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1192 |
int |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1193 |
-sysid2buff (u_char * buff, const u_char * dotted) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1194 |
+sysid2buff (u_char * buff, const char * dotted) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1195 |
{ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1196 |
int len = 0; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1197 |
- const u_char *pos = dotted; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1198 |
+ const char *pos = dotted; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1199 |
u_char number[3]; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1200 |
|
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1201 |
number[2] = '\0'; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1202 |
@@ -254,6 +259,11 @@ speaks (struct nlpids *nlpids, int family) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1203 |
{ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1204 |
int i, speaks = 0; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1205 |
|
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1206 |
+#ifdef HAVE_TRILL |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1207 |
+ /* TRILL has no nlpid defined */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1208 |
+ if (family == AF_TRILL && isis->trill_active) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1209 |
+ return TRUE; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1210 |
+#endif |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1211 |
if (nlpids == (struct nlpids *) NULL) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1212 |
return speaks; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1213 |
for (i = 0; i < nlpids->count; i++) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1214 |
@@ -271,7 +281,7 @@ speaks (struct nlpids *nlpids, int family) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1215 |
* Returns 0 on error, IS-IS Circuit Type on ok |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1216 |
*/ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1217 |
int |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1218 |
-string2circuit_t (const u_char * str) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1219 |
+string2circuit_t (const char * str) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1220 |
{ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1221 |
|
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1222 |
if (!str) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1223 |
@@ -498,7 +508,6 @@ unix_hostname (void) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1224 |
{ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1225 |
static struct utsname names; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1226 |
const char *hostname; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1227 |
- extern struct host host; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1228 |
|
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1229 |
hostname = host.name; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1230 |
if (!hostname) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1231 |
@@ -509,3 +518,26 @@ unix_hostname (void) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1232 |
|
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1233 |
return hostname; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1234 |
} |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1235 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1236 |
+/* |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1237 |
+ * Returns the dynamic hostname associated with the passed system ID. |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1238 |
+ * If no dynamic hostname found then returns formatted system ID. |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1239 |
+ */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1240 |
+const char * |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1241 |
+print_sys_hostname (u_char *sysid) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1242 |
+{ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1243 |
+ struct isis_dynhn *dyn; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1244 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1245 |
+ if (!sysid) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1246 |
+ return "nullsysid"; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1247 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1248 |
+ /* For our system ID return our host name */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1249 |
+ if (memcmp(sysid, isis->sysid, ISIS_SYS_ID_LEN) == 0) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1250 |
+ return unix_hostname(); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1251 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1252 |
+ dyn = dynhn_find_by_id (sysid); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1253 |
+ if (dyn) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1254 |
+ return (const char *)dyn->name.name; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1255 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1256 |
+ return sysid_print (sysid); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1257 |
+} |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1258 |
diff --git isisd/isis_misc.h isisd/isis_misc.h |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1259 |
index d5003a8..2db48aa 100644 |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1260 |
--- isisd/isis_misc.h |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1261 |
+++ isisd/isis_misc.h |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1262 |
@@ -24,7 +24,7 @@ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1263 |
#ifndef _ZEBRA_ISIS_MISC_H |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1264 |
#define _ZEBRA_ISIS_MISC_H |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1265 |
|
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1266 |
-int string2circuit_t (const u_char *); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1267 |
+int string2circuit_t (const char *); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1268 |
const char *circuit_t2string (int); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1269 |
const char *syst2string (int); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1270 |
struct in_addr newprefix2inaddr (u_char * prefix_start, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1271 |
@@ -33,8 +33,8 @@ struct in_addr newprefix2inaddr (u_char * prefix_start, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1272 |
* Converting input to memory stored format |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1273 |
* return value of 0 indicates wrong input |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1274 |
*/ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1275 |
-int dotformat2buff (u_char *, const u_char *); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1276 |
-int sysid2buff (u_char *, const u_char *); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1277 |
+int dotformat2buff (u_char *, const char *); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1278 |
+int sysid2buff (u_char *, const char *); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1279 |
|
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1280 |
/* |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1281 |
* Printing functions |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1282 |
@@ -46,6 +46,7 @@ const char *rawlspid_print (u_char *); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1283 |
const char *time2string (u_int32_t); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1284 |
/* typedef struct nlpids nlpids; */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1285 |
char *nlpid2string (struct nlpids *); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1286 |
+const char *print_sys_hostname (u_char *sysid); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1287 |
|
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1288 |
/* |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1289 |
* misc functions |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1290 |
diff --git isisd/isis_pdu.c isisd/isis_pdu.c |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1291 |
index 4311a90..d8573aa 100644 |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1292 |
--- isisd/isis_pdu.c |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1293 |
+++ isisd/isis_pdu.c |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1294 |
@@ -52,6 +52,11 @@ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1295 |
#include "isisd/iso_checksum.h" |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1296 |
#include "isisd/isis_csm.h" |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1297 |
#include "isisd/isis_events.h" |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1298 |
+#ifdef HAVE_TRILL |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1299 |
+#include <net/trill.h> |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1300 |
+#include "isisd/isis_vlans.h" |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1301 |
+#include "isisd/isis_trill.h" |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1302 |
+#endif |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1303 |
|
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1304 |
extern struct thread_master *master; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1305 |
extern struct isis *isis; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1306 |
@@ -787,9 +792,14 @@ process_lan_hello (int level, struct isis_circuit *circuit, u_char * ssnpa) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1307 |
|
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1308 |
/* |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1309 |
* check if it's own interface ip match iih ip addrs |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1310 |
+ * If TRILL enabled bypass this check as IS-IS is used at layer-2 |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1311 |
*/ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1312 |
- if (!(found & TLVFLAG_IPV4_ADDR) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1313 |
- || !ip_match (circuit->ip_addrs, tlvs.ipv4_addrs)) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1314 |
+ if ( |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1315 |
+#ifdef HAVE_TRILL |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1316 |
+ !isis->trill_active && |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1317 |
+#endif |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1318 |
+ (!(found & TLVFLAG_IPV4_ADDR) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1319 |
+ || !ip_match (circuit->ip_addrs, tlvs.ipv4_addrs))) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1320 |
{ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1321 |
zlog_debug |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1322 |
("ISIS-Adj: No usable IP interface addresses in LAN IIH from %s\n", |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1323 |
@@ -884,7 +894,7 @@ process_lan_hello (int level, struct isis_circuit *circuit, u_char * ssnpa) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1324 |
if (adj->adj_state != ISIS_ADJ_UP) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1325 |
{ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1326 |
for (ALL_LIST_ELEMENTS_RO (tlvs.lan_neighs, node, snpa)) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1327 |
- if (!memcmp (snpa, circuit->u.bc.snpa, ETH_ALEN)) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1328 |
+ if (!memcmp (snpa, circuit->u.bc.snpa, ETH_ALEN)) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1329 |
{ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1330 |
isis_adj_state_change (adj, ISIS_ADJ_UP, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1331 |
"own SNPA found in LAN Neighbours TLV"); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1332 |
@@ -892,6 +902,11 @@ process_lan_hello (int level, struct isis_circuit *circuit, u_char * ssnpa) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1333 |
} |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1334 |
} |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1335 |
|
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1336 |
+#ifdef HAVE_TRILL |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1337 |
+ if (found & TLVFLAG_PORT_CAPABILITY && (tlvs.port_capabilities != NULL)) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1338 |
+ trill_process_hello(adj, tlvs.port_capabilities); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1339 |
+#endif |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1340 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1341 |
out: |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1342 |
/* DEBUG_ADJ_PACKETS */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1343 |
if (isis->debugs & DEBUG_ADJ_PACKETS) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1344 |
@@ -1054,6 +1069,7 @@ process_lsp (int level, struct isis_circuit *circuit, u_char * ssnpa) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1345 |
((level == 2) && |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1346 |
(circuit->u.p2p.neighbor->adj_usage == ISIS_ADJ_LEVEL1))) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1347 |
return ISIS_WARNING; /* Silently discard */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1348 |
+ adj = circuit->u.p2p.neighbor; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1349 |
} |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1350 |
} |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1351 |
dontcheckadj: |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1352 |
@@ -1251,7 +1267,12 @@ dontcheckadj: |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1353 |
} |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1354 |
} |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1355 |
if (lsp) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1356 |
- lsp->adj = adj; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1357 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1358 |
+ /* store the adjacency in LSP and add LSP to adj's LSP list */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1359 |
+ lsp->adj = adj; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1360 |
+ if (adj) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1361 |
+ listnode_add (adj->lsps, lsp); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1362 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1363 |
return retval; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1364 |
} |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1365 |
|
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1366 |
@@ -1534,7 +1555,11 @@ process_snp (int snp_type, int level, struct isis_circuit *circuit, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1367 |
ISIS_SET_FLAG (lsp->SRMflags, circuit); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1368 |
} |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1369 |
/* lets free it */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1370 |
- list_free (lsp_list); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1371 |
+ list_delete (lsp_list); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1372 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1373 |
+#ifdef HAVE_TRILL |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1374 |
+ trill_lspdb_acquire_event (circuit, CSNPRCV); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1375 |
+#endif |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1376 |
} |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1377 |
|
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1378 |
free_tlvs (&tlvs); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1379 |
@@ -1653,6 +1678,11 @@ isis_handle_pdu (struct isis_circuit *circuit, u_char * ssnpa) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1380 |
|
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1381 |
int retval = ISIS_OK; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1382 |
|
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1383 |
+#ifdef HAVE_TRILL |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1384 |
+ if (isis->trill_active && circuit->vlans->rx_tci == TRILL_TCI_BPDU) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1385 |
+ return trill_process_bpdu (circuit, ssnpa); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1386 |
+#endif |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1387 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1388 |
/* |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1389 |
* Let's first read data from stream to the header |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1390 |
*/ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1391 |
@@ -1767,7 +1797,7 @@ isis_handle_pdu (struct isis_circuit *circuit, u_char * ssnpa) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1392 |
return retval; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1393 |
} |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1394 |
|
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1395 |
-#ifdef GNU_LINUX |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1396 |
+#if defined(GNU_LINUX) || defined(SUNOS_5) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1397 |
int |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1398 |
isis_receive (struct thread *thread) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1399 |
{ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1400 |
@@ -1791,6 +1821,8 @@ isis_receive (struct thread *thread) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1401 |
|
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1402 |
if (retval == ISIS_OK) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1403 |
retval = isis_handle_pdu (circuit, ssnpa); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1404 |
+ else |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1405 |
+ zlog_debug("isis_receive: error %d from circuit->rx", retval); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1406 |
|
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1407 |
/* |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1408 |
* prepare for next packet. |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1409 |
@@ -1879,6 +1911,10 @@ fill_fixed_hdr (struct isis_fixed_hdr *hdr, u_char pdu_type) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1410 |
hdr->id_len = 0; /* ISIS_SYS_ID_LEN - 0==6 */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1411 |
hdr->version2 = 1; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1412 |
hdr->max_area_addrs = 0; /* isis->max_area_addrs - 0==3 */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1413 |
+#ifdef HAVE_TRILL |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1414 |
+ if (isis->trill_active) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1415 |
+ hdr->max_area_addrs = isis->max_area_addrs; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1416 |
+#endif |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1417 |
} |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1418 |
|
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1419 |
/* |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1420 |
@@ -2017,6 +2053,12 @@ send_hello (struct isis_circuit *circuit, int level) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1421 |
return ISIS_WARNING; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1422 |
#endif /* HAVE_IPV6 */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1423 |
|
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1424 |
+#ifdef HAVE_TRILL |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1425 |
+ if (level == TRILL_ISIS_LEVEL) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1426 |
+ if (tlv_add_trill_vlans(circuit)) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1427 |
+ return ISIS_WARNING; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1428 |
+#endif |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1429 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1430 |
if (circuit->u.bc.pad_hellos) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1431 |
if (tlv_add_padding (circuit->snd_stream)) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1432 |
return ISIS_WARNING; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1433 |
@@ -2027,7 +2069,8 @@ send_hello (struct isis_circuit *circuit, int level) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1434 |
|
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1435 |
retval = circuit->tx (circuit, level); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1436 |
if (retval) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1437 |
- zlog_warn ("sending of LAN Level %d Hello failed", level); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1438 |
+ zlog_warn ("sending of LAN Level %d Hello failed on %s", level, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1439 |
+ circuit->interface->name); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1440 |
|
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1441 |
/* DEBUG_ADJ_PACKETS */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1442 |
if (isis->debugs & DEBUG_ADJ_PACKETS) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1443 |
@@ -2070,7 +2113,12 @@ send_lan_l1_hello (struct thread *thread) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1444 |
if (circuit->u.bc.run_dr_elect[0]) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1445 |
retval = isis_dr_elect (circuit, 1); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1446 |
|
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1447 |
+#ifdef HAVE_TRILL |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1448 |
+ send_trill_vlan_hellos(circuit); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1449 |
+ retval = ISIS_OK; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1450 |
+#else |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1451 |
retval = send_lan_hello (circuit, 1); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1452 |
+#endif |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1453 |
|
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1454 |
/* set next timer thread */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1455 |
THREAD_TIMER_ON (master, circuit->u.bc.t_send_lan_hello[0], |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1456 |
@@ -2252,6 +2300,9 @@ send_l1_csnp (struct thread *thread) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1457 |
/* set next timer thread */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1458 |
THREAD_TIMER_ON (master, circuit->t_send_csnp[0], send_l1_csnp, circuit, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1459 |
isis_jitter (circuit->csnp_interval[0], CSNP_JITTER)); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1460 |
+#ifdef HAVE_TRILL |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1461 |
+ trill_lspdb_acquire_event (circuit, CSNPSND); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1462 |
+#endif |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1463 |
|
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1464 |
return retval; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1465 |
} |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1466 |
@@ -2274,6 +2325,9 @@ send_l2_csnp (struct thread *thread) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1467 |
/* set next timer thread */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1468 |
THREAD_TIMER_ON (master, circuit->t_send_csnp[1], send_l2_csnp, circuit, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1469 |
isis_jitter (circuit->csnp_interval[1], CSNP_JITTER)); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1470 |
+#ifdef HAVE_TRILL |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1471 |
+ trill_lspdb_acquire_event (circuit, CSNPSND); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1472 |
+#endif |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1473 |
|
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1474 |
return retval; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1475 |
} |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1476 |
@@ -2399,6 +2453,10 @@ send_psnp (int level, struct isis_circuit *circuit) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1477 |
} |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1478 |
} |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1479 |
list_delete (list); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1480 |
+#ifdef HAVE_TRILL |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1481 |
+ if (circuit->circ_type != CIRCUIT_T_BROADCAST) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1482 |
+ trill_lspdb_acquire_event (circuit, PSNPSNDTRY); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1483 |
+#endif |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1484 |
} |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1485 |
} |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1486 |
|
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1487 |
diff --git isisd/isis_spf.c isisd/isis_spf.c |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1488 |
index 5d7e9da..6e53601 100644 |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1489 |
--- isisd/isis_spf.c |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1490 |
+++ isisd/isis_spf.c |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1491 |
@@ -37,21 +37,24 @@ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1492 |
#include "isis_constants.h" |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1493 |
#include "isis_common.h" |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1494 |
#include "dict.h" |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1495 |
+#include "isis_flags.h" |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1496 |
+#include "isis_circuit.h" |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1497 |
+#include "isis_tlv.h" |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1498 |
+#include "isis_lsp.h" |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1499 |
+#ifdef HAVE_TRILL |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1500 |
+#include "isis_vlans.h" |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1501 |
+#include "isis_trill.h" |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1502 |
+#endif |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1503 |
#include "isisd.h" |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1504 |
#include "isis_misc.h" |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1505 |
#include "isis_adjacency.h" |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1506 |
-#include "isis_circuit.h" |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1507 |
-#include "isis_tlv.h" |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1508 |
#include "isis_pdu.h" |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1509 |
-#include "isis_lsp.h" |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1510 |
#include "isis_dynhn.h" |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1511 |
#include "isis_spf.h" |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1512 |
#include "isis_route.h" |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1513 |
#include "isis_csm.h" |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1514 |
|
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1515 |
-extern struct isis *isis; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1516 |
extern struct thread_master *master; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1517 |
-extern struct host host; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1518 |
|
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1519 |
int isis_run_spf_l1 (struct thread *thread); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1520 |
int isis_run_spf_l2 (struct thread *thread); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1521 |
@@ -188,7 +191,7 @@ vid2string (struct isis_vertex *vertex, u_char * buff) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1522 |
} |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1523 |
#endif /* EXTREME_DEBUG */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1524 |
|
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1525 |
-static struct isis_spftree * |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1526 |
+struct isis_spftree * |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1527 |
isis_spftree_new () |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1528 |
{ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1529 |
struct isis_spftree *tree; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1530 |
@@ -209,14 +212,14 @@ static void |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1531 |
isis_vertex_del (struct isis_vertex *vertex) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1532 |
{ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1533 |
list_delete (vertex->Adj_N); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1534 |
+ list_delete (vertex->children); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1535 |
|
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1536 |
XFREE (MTYPE_ISIS_VERTEX, vertex); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1537 |
|
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1538 |
return; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1539 |
} |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1540 |
|
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1541 |
-#if 0 /* HT: Not used yet. */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1542 |
-static void |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1543 |
+void |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1544 |
isis_spftree_del (struct isis_spftree *spftree) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1545 |
{ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1546 |
spftree->tents->del = (void (*)(void *)) isis_vertex_del; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1547 |
@@ -229,7 +232,6 @@ isis_spftree_del (struct isis_spftree *spftree) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1548 |
|
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1549 |
return; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1550 |
} |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1551 |
-#endif |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1552 |
|
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1553 |
void |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1554 |
spftree_area_init (struct isis_area *area) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1555 |
@@ -258,6 +260,28 @@ spftree_area_init (struct isis_area *area) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1556 |
return; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1557 |
} |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1558 |
|
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1559 |
+void |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1560 |
+spftree_area_del (struct isis_area *area) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1561 |
+{ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1562 |
+ if ((area->is_type & IS_LEVEL_1) && area->spftree[0] != NULL) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1563 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1564 |
+ isis_spftree_del (area->spftree[0]); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1565 |
+#ifdef HAVE_IPV6 |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1566 |
+ isis_spftree_del (area->spftree6[0]); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1567 |
+#endif |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1568 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1569 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1570 |
+ if ((area->is_type & IS_LEVEL_2) && area->spftree[1] != NULL) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1571 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1572 |
+ isis_spftree_del (area->spftree[1]); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1573 |
+#ifdef HAVE_IPV6 |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1574 |
+ isis_spftree_del (area->spftree6[1]); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1575 |
+#endif |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1576 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1577 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1578 |
+ return; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1579 |
+} |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1580 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1581 |
static struct isis_vertex * |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1582 |
isis_vertex_new (void *id, enum vertextype vtype) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1583 |
{ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1584 |
@@ -297,36 +321,47 @@ isis_vertex_new (void *id, enum vertextype vtype) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1585 |
} |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1586 |
|
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1587 |
vertex->Adj_N = list_new (); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1588 |
+ vertex->children = list_new (); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1589 |
|
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1590 |
return vertex; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1591 |
} |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1592 |
|
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1593 |
+/* |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1594 |
+ * Find the system LSP: returns the LSP in our LSP database |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1595 |
+ * associated with the given system ID. |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1596 |
+ */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1597 |
+static struct isis_lsp * |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1598 |
+isis_root_system_lsp (struct isis_area *area, int level, u_char *sysid) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1599 |
+{ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1600 |
+ u_char lspid[ISIS_SYS_ID_LEN + 2]; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1601 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1602 |
+ memcpy (lspid, sysid, ISIS_SYS_ID_LEN); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1603 |
+ LSP_PSEUDO_ID (lspid) = 0; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1604 |
+ LSP_FRAGMENT (lspid) = 0; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1605 |
+ return (lsp_search (lspid, area->lspdb[level - 1])); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1606 |
+} |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1607 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1608 |
/* |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1609 |
* Add this IS to the root of SPT |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1610 |
*/ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1611 |
-static void |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1612 |
-isis_spf_add_self (struct isis_spftree *spftree, struct isis_area *area, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1613 |
- int level) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1614 |
+static struct isis_vertex * |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1615 |
+isis_spf_add_root (struct isis_spftree *spftree, struct isis_area *area, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1616 |
+ int level, u_char *sysid) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1617 |
{ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1618 |
struct isis_vertex *vertex; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1619 |
struct isis_lsp *lsp; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1620 |
- u_char lspid[ISIS_SYS_ID_LEN + 2]; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1621 |
#ifdef EXTREME_DEBUG |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1622 |
u_char buff[BUFSIZ]; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1623 |
#endif /* EXTREME_DEBUG */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1624 |
- memcpy (lspid, isis->sysid, ISIS_SYS_ID_LEN); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1625 |
- LSP_PSEUDO_ID (lspid) = 0; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1626 |
- LSP_FRAGMENT (lspid) = 0; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1627 |
- |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1628 |
- lsp = lsp_search (lspid, area->lspdb[level - 1]); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1629 |
|
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1630 |
+ lsp = isis_root_system_lsp (area, level, sysid); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1631 |
if (lsp == NULL) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1632 |
zlog_warn ("ISIS-Spf: could not find own l%d LSP!", level); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1633 |
|
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1634 |
if (!area->oldmetric) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1635 |
- vertex = isis_vertex_new (isis->sysid, VTYPE_NONPSEUDO_TE_IS); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1636 |
+ vertex = isis_vertex_new (sysid, VTYPE_NONPSEUDO_TE_IS); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1637 |
else |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1638 |
- vertex = isis_vertex_new (isis->sysid, VTYPE_NONPSEUDO_IS); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1639 |
+ vertex = isis_vertex_new (sysid, VTYPE_NONPSEUDO_IS); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1640 |
|
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1641 |
vertex->lsp = lsp; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1642 |
|
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1643 |
@@ -338,7 +373,7 @@ isis_spf_add_self (struct isis_spftree *spftree, struct isis_area *area, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1644 |
vertex->depth, vertex->d_N); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1645 |
#endif /* EXTREME_DEBUG */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1646 |
|
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1647 |
- return; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1648 |
+ return vertex; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1649 |
} |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1650 |
|
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1651 |
static struct isis_vertex * |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1652 |
@@ -391,7 +426,8 @@ isis_find_vertex (struct list *list, void *id, enum vertextype vtype) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1653 |
static struct isis_vertex * |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1654 |
isis_spf_add2tent (struct isis_spftree *spftree, enum vertextype vtype, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1655 |
void *id, struct isis_adjacency *adj, u_int32_t cost, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1656 |
- int depth, int family) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1657 |
+ int depth, int family, struct isis_vertex *parent, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1658 |
+ struct isis_lsp *lsp) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1659 |
{ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1660 |
struct isis_vertex *vertex, *v; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1661 |
struct listnode *node; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1662 |
@@ -402,21 +438,28 @@ isis_spf_add2tent (struct isis_spftree *spftree, enum vertextype vtype, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1663 |
vertex = isis_vertex_new (id, vtype); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1664 |
vertex->d_N = cost; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1665 |
vertex->depth = depth; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1666 |
+ vertex->parent = parent; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1667 |
+ if (parent && (listnode_lookup (parent->children, vertex) == NULL)) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1668 |
+ listnode_add (parent->children, vertex); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1669 |
+ /* Store the LSP we learnt the vertex from */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1670 |
+ vertex->lsp = lsp; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1671 |
|
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1672 |
if (adj) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1673 |
listnode_add (vertex->Adj_N, adj); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1674 |
#ifdef EXTREME_DEBUG |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1675 |
- zlog_debug ("ISIS-Spf: add to TENT %s %s depth %d dist %d", |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1676 |
+ zlog_debug ("ISIS-Spf: add to TENT %s %s %s depth %d dist %d", |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1677 |
+ print_sys_hostname (vertex->N.id), |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1678 |
vtype2string (vertex->type), vid2string (vertex, buff), |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1679 |
vertex->depth, vertex->d_N); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1680 |
#endif /* EXTREME_DEBUG */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1681 |
- listnode_add (spftree->tents, vertex); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1682 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1683 |
if (list_isempty (spftree->tents)) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1684 |
{ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1685 |
listnode_add (spftree->tents, vertex); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1686 |
return vertex; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1687 |
} |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1688 |
- |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1689 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1690 |
+ listnode_add (spftree->tents, vertex); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1691 |
/* XXX: This cant use the standard ALL_LIST_ELEMENT macro */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1692 |
for (node = listhead (spftree->tents); node; node = listnextnode (node)) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1693 |
{ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1694 |
@@ -454,7 +497,8 @@ isis_spf_add2tent (struct isis_spftree *spftree, enum vertextype vtype, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1695 |
static struct isis_vertex * |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1696 |
isis_spf_add_local (struct isis_spftree *spftree, enum vertextype vtype, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1697 |
void *id, struct isis_adjacency *adj, u_int32_t cost, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1698 |
- int family) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1699 |
+ int family, struct isis_vertex *parent, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1700 |
+ struct isis_lsp *lsp) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1701 |
{ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1702 |
struct isis_vertex *vertex; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1703 |
|
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1704 |
@@ -482,13 +526,13 @@ isis_spf_add_local (struct isis_spftree *spftree, enum vertextype vtype, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1705 |
} |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1706 |
|
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1707 |
add2tent: |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1708 |
- return isis_spf_add2tent (spftree, vtype, id, adj, cost, 1, family); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1709 |
+ return isis_spf_add2tent (spftree, vtype, id, adj, cost, 1, family, parent, lsp); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1710 |
} |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1711 |
|
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1712 |
static void |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1713 |
process_N (struct isis_spftree *spftree, enum vertextype vtype, void *id, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1714 |
u_int16_t dist, u_int16_t depth, struct isis_adjacency *adj, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1715 |
- int family) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1716 |
+ int family, struct isis_vertex *parent, struct isis_lsp *lsp) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1717 |
{ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1718 |
struct isis_vertex *vertex; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1719 |
#ifdef EXTREME_DEBUG |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1720 |
@@ -503,7 +547,8 @@ process_N (struct isis_spftree *spftree, enum vertextype vtype, void *id, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1721 |
if (vertex) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1722 |
{ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1723 |
#ifdef EXTREME_DEBUG |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1724 |
- zlog_debug ("ISIS-Spf: process_N %s %s dist %d already found from PATH", |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1725 |
+ zlog_debug ("ISIS-Spf: process_N %s %s %s dist %d already found from PATH", |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1726 |
+ print_sys_hostname (vertex->N.id), |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1727 |
vtype2string (vtype), vid2string (vertex, buff), dist); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1728 |
#endif /* EXTREME_DEBUG */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1729 |
assert (dist >= vertex->d_N); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1730 |
@@ -516,7 +561,8 @@ process_N (struct isis_spftree *spftree, enum vertextype vtype, void *id, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1731 |
{ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1732 |
/* 1) */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1733 |
#ifdef EXTREME_DEBUG |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1734 |
- zlog_debug ("ISIS-Spf: process_N %s %s dist %d", |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1735 |
+ zlog_debug ("ISIS-Spf: process_N %s %s %s dist %d", |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1736 |
+ print_sys_hostname (vertex->N.id), |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1737 |
vtype2string (vtype), vid2string (vertex, buff), dist); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1738 |
#endif /* EXTREME_DEBUG */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1739 |
if (vertex->d_N == dist) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1740 |
@@ -540,7 +586,13 @@ process_N (struct isis_spftree *spftree, enum vertextype vtype, void *id, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1741 |
} |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1742 |
} |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1743 |
|
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1744 |
- isis_spf_add2tent (spftree, vtype, id, adj, dist, depth, family); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1745 |
+#ifdef EXTREME_DEBUG |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1746 |
+ zlog_debug ("ISIS-Spf: process_N add2tent %s %s dist %d", |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1747 |
+ print_sys_hostname(id), |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1748 |
+ vtype2string (vtype), dist); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1749 |
+#endif /* EXTREME_DEBUG */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1750 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1751 |
+ isis_spf_add2tent (spftree, vtype, id, adj, dist, depth, family, parent, lsp); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1752 |
return; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1753 |
} |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1754 |
|
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1755 |
@@ -549,7 +601,8 @@ process_N (struct isis_spftree *spftree, enum vertextype vtype, void *id, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1756 |
*/ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1757 |
static int |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1758 |
isis_spf_process_lsp (struct isis_spftree *spftree, struct isis_lsp *lsp, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1759 |
- uint32_t cost, uint16_t depth, int family) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1760 |
+ uint32_t cost, uint16_t depth, int family, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1761 |
+ u_char *root_sysid, struct isis_vertex *parent) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1762 |
{ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1763 |
struct listnode *node, *fragnode = NULL; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1764 |
u_int16_t dist; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1765 |
@@ -562,13 +615,27 @@ isis_spf_process_lsp (struct isis_spftree *spftree, struct isis_lsp *lsp, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1766 |
#ifdef HAVE_IPV6 |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1767 |
struct ipv6_reachability *ip6reach; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1768 |
#endif /* HAVE_IPV6 */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1769 |
+ struct isis_adjacency *adj = NULL; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1770 |
+ static const u_char null_sysid[ISIS_SYS_ID_LEN]; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1771 |
|
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1772 |
- |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1773 |
- if (!lsp->adj) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1774 |
- return ISIS_WARNING; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1775 |
- if (lsp->tlv_data.nlpids == NULL || !speaks (lsp->tlv_data.nlpids, family)) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1776 |
+ if (!speaks (lsp->tlv_data.nlpids, family)) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1777 |
return ISIS_OK; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1778 |
|
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1779 |
+ /* |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1780 |
+ * Note the adjacency (the neighboring system we received the LSP from) when computing |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1781 |
+ * the SPF with our system as the root. Adjacencies computed are used for TRILL forwarding. |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1782 |
+ */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1783 |
+ if (memcmp (root_sysid, isis->sysid, ISIS_SYS_ID_LEN) == 0) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1784 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1785 |
+ /* |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1786 |
+ * lsp->adj can be NULL if computing SPF for other TRILL RBridges |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1787 |
+ * when lsp->adj is NULL during processing of lsps created by us. |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1788 |
+ */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1789 |
+ if (!lsp->adj) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1790 |
+ return ISIS_WARNING; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1791 |
+ adj = lsp->adj; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1792 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1793 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1794 |
lspfragloop: |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1795 |
if (lsp->lsp_header->seq_num == 0) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1796 |
{ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1797 |
@@ -577,6 +644,10 @@ lspfragloop: |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1798 |
return ISIS_WARNING; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1799 |
} |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1800 |
|
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1801 |
+#ifdef EXTREME_DEBUG |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1802 |
+ zlog_debug ("ISIS-Spf: process_lsp %s", print_sys_hostname(lsp->lsp_header->lsp_id)); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1803 |
+#endif /* EXTREME_DEBUG */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1804 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1805 |
if (!ISIS_MASK_LSP_OL_BIT (lsp->lsp_header->lsp_bits)) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1806 |
{ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1807 |
if (lsp->tlv_data.is_neighs) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1808 |
@@ -585,13 +656,15 @@ lspfragloop: |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1809 |
{ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1810 |
/* C.2.6 a) */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1811 |
/* Two way connectivity */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1812 |
- if (!memcmp (is_neigh->neigh_id, isis->sysid, ISIS_SYS_ID_LEN)) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1813 |
+ if (!memcmp (is_neigh->neigh_id, root_sysid, ISIS_SYS_ID_LEN)) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1814 |
+ continue; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1815 |
+ if (!memcmp (is_neigh->neigh_id, null_sysid, ISIS_SYS_ID_LEN)) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1816 |
continue; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1817 |
dist = cost + is_neigh->metrics.metric_default; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1818 |
vtype = LSP_PSEUDO_ID (is_neigh->neigh_id) ? VTYPE_PSEUDO_IS |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1819 |
: VTYPE_NONPSEUDO_IS; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1820 |
process_N (spftree, vtype, (void *) is_neigh->neigh_id, dist, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1821 |
- depth + 1, lsp->adj, family); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1822 |
+ depth + 1, adj, family, parent, lsp); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1823 |
} |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1824 |
} |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1825 |
if (lsp->tlv_data.te_is_neighs) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1826 |
@@ -599,15 +672,15 @@ lspfragloop: |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1827 |
for (ALL_LIST_ELEMENTS_RO (lsp->tlv_data.te_is_neighs, node, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1828 |
te_is_neigh)) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1829 |
{ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1830 |
- uint32_t metric; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1831 |
- if (!memcmp (te_is_neigh->neigh_id, isis->sysid, ISIS_SYS_ID_LEN)) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1832 |
+ if (!memcmp (te_is_neigh->neigh_id, root_sysid, ISIS_SYS_ID_LEN)) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1833 |
+ continue; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1834 |
+ if (!memcmp (te_is_neigh->neigh_id, null_sysid, ISIS_SYS_ID_LEN)) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1835 |
continue; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1836 |
- memcpy (&metric, te_is_neigh->te_metric, 3); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1837 |
- dist = cost + ntohl (metric << 8); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1838 |
+ dist = cost + GET_TE_METRIC(te_is_neigh); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1839 |
vtype = LSP_PSEUDO_ID (te_is_neigh->neigh_id) ? VTYPE_PSEUDO_TE_IS |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1840 |
: VTYPE_NONPSEUDO_TE_IS; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1841 |
process_N (spftree, vtype, (void *) te_is_neigh->neigh_id, dist, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1842 |
- depth + 1, lsp->adj, family); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1843 |
+ depth + 1, adj, family, parent, lsp); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1844 |
} |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1845 |
} |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1846 |
if (family == AF_INET && lsp->tlv_data.ipv4_int_reachs) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1847 |
@@ -621,7 +694,7 @@ lspfragloop: |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1848 |
prefix.u.prefix4 = ipreach->prefix; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1849 |
prefix.prefixlen = ip_masklen (ipreach->mask); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1850 |
process_N (spftree, vtype, (void *) &prefix, dist, depth + 1, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1851 |
- lsp->adj, family); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1852 |
+ adj, family, parent, lsp); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1853 |
} |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1854 |
} |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1855 |
|
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1856 |
@@ -636,7 +709,7 @@ lspfragloop: |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1857 |
prefix.u.prefix4 = ipreach->prefix; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1858 |
prefix.prefixlen = ip_masklen (ipreach->mask); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1859 |
process_N (spftree, vtype, (void *) &prefix, dist, depth + 1, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1860 |
- lsp->adj, family); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1861 |
+ adj, family, parent, lsp); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1862 |
} |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1863 |
} |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1864 |
if (family == AF_INET && lsp->tlv_data.te_ipv4_reachs) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1865 |
@@ -651,7 +724,7 @@ lspfragloop: |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1866 |
te_ipv4_reach->control); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1867 |
prefix.prefixlen = (te_ipv4_reach->control & 0x3F); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1868 |
process_N (spftree, vtype, (void *) &prefix, dist, depth + 1, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1869 |
- lsp->adj, family); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1870 |
+ adj, family, parent, lsp); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1871 |
} |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1872 |
} |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1873 |
#ifdef HAVE_IPV6 |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1874 |
@@ -668,7 +741,7 @@ lspfragloop: |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1875 |
memcpy (&prefix.u.prefix6.s6_addr, ip6reach->prefix, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1876 |
PSIZE (ip6reach->prefix_len)); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1877 |
process_N (spftree, vtype, (void *) &prefix, dist, depth + 1, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1878 |
- lsp->adj, family); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1879 |
+ adj, family, parent, lsp); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1880 |
} |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1881 |
} |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1882 |
#endif /* HAVE_IPV6 */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1883 |
@@ -691,12 +764,22 @@ lspfragloop: |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1884 |
static int |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1885 |
isis_spf_process_pseudo_lsp (struct isis_spftree *spftree, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1886 |
struct isis_lsp *lsp, uint16_t cost, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1887 |
- uint16_t depth, int family) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1888 |
+ uint16_t depth, int family, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1889 |
+ u_char *root_sysid, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1890 |
+ struct isis_vertex *parent) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1891 |
{ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1892 |
struct listnode *node, *fragnode = NULL; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1893 |
struct is_neigh *is_neigh; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1894 |
struct te_is_neigh *te_is_neigh; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1895 |
enum vertextype vtype; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1896 |
+ struct isis_adjacency *adj = NULL; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1897 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1898 |
+ /* |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1899 |
+ * Note the adjacency (the neighboring system we received the LSP from) when computing |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1900 |
+ * the SPF with our system as the root. Adjacencies computed are used for TRILL forwarding. |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1901 |
+ */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1902 |
+ if (memcmp (root_sysid, isis->sysid, ISIS_SYS_ID_LEN) == 0) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1903 |
+ adj = lsp->adj; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1904 |
|
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1905 |
pseudofragloop: |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1906 |
|
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1907 |
@@ -707,13 +790,17 @@ pseudofragloop: |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1908 |
return ISIS_WARNING; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1909 |
} |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1910 |
|
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1911 |
+#ifdef EXTREME_DEBUG |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1912 |
+ zlog_debug ("ISIS-Spf: process_pseudo_lsp %s", print_sys_hostname(lsp->lsp_header->lsp_id)); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1913 |
+#endif /* EXTREME_DEBUG */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1914 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1915 |
if (lsp->tlv_data.is_neighs) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1916 |
for (ALL_LIST_ELEMENTS_RO (lsp->tlv_data.is_neighs, node, is_neigh)) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1917 |
{ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1918 |
vtype = LSP_PSEUDO_ID (is_neigh->neigh_id) ? VTYPE_PSEUDO_IS |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1919 |
: VTYPE_NONPSEUDO_IS; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1920 |
/* Two way connectivity */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1921 |
- if (!memcmp (is_neigh->neigh_id, isis->sysid, ISIS_SYS_ID_LEN)) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1922 |
+ if (!memcmp (is_neigh->neigh_id, root_sysid, ISIS_SYS_ID_LEN)) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1923 |
continue; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1924 |
if (isis_find_vertex |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1925 |
(spftree->tents, (void *) is_neigh->neigh_id, vtype) == NULL |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1926 |
@@ -721,8 +808,8 @@ pseudofragloop: |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1927 |
vtype) == NULL) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1928 |
{ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1929 |
/* C.2.5 i) */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1930 |
- isis_spf_add2tent (spftree, vtype, is_neigh->neigh_id, lsp->adj, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1931 |
- cost, depth, family); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1932 |
+ isis_spf_add2tent (spftree, vtype, is_neigh->neigh_id, adj, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1933 |
+ cost, depth, family, parent, lsp); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1934 |
} |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1935 |
} |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1936 |
if (lsp->tlv_data.te_is_neighs) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1937 |
@@ -731,7 +818,7 @@ pseudofragloop: |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1938 |
vtype = LSP_PSEUDO_ID (te_is_neigh->neigh_id) ? VTYPE_PSEUDO_TE_IS |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1939 |
: VTYPE_NONPSEUDO_TE_IS; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1940 |
/* Two way connectivity */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1941 |
- if (!memcmp (te_is_neigh->neigh_id, isis->sysid, ISIS_SYS_ID_LEN)) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1942 |
+ if (!memcmp (te_is_neigh->neigh_id, root_sysid, ISIS_SYS_ID_LEN)) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1943 |
continue; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1944 |
if (isis_find_vertex |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1945 |
(spftree->tents, (void *) te_is_neigh->neigh_id, vtype) == NULL |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1946 |
@@ -739,8 +826,8 @@ pseudofragloop: |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1947 |
vtype) == NULL) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1948 |
{ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1949 |
/* C.2.5 i) */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1950 |
- isis_spf_add2tent (spftree, vtype, te_is_neigh->neigh_id, lsp->adj, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1951 |
- cost, depth, family); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1952 |
+ isis_spf_add2tent (spftree, vtype, te_is_neigh->neigh_id, adj, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1953 |
+ cost, depth, family, parent, lsp); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1954 |
} |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1955 |
} |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1956 |
|
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1957 |
@@ -760,23 +847,67 @@ pseudofragloop: |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1958 |
|
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1959 |
static int |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1960 |
isis_spf_preload_tent (struct isis_spftree *spftree, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1961 |
- struct isis_area *area, int level, int family) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1962 |
+ struct isis_area *area, int level, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1963 |
+ int family, u_char *root_sysid, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1964 |
+ struct isis_vertex *parent) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1965 |
{ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1966 |
struct isis_vertex *vertex; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1967 |
struct isis_circuit *circuit; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1968 |
struct listnode *cnode, *anode, *ipnode; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1969 |
struct isis_adjacency *adj; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1970 |
struct isis_lsp *lsp; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1971 |
+ struct isis_lsp *root_lsp; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1972 |
struct list *adj_list; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1973 |
struct list *adjdb; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1974 |
struct prefix_ipv4 *ipv4; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1975 |
struct prefix prefix; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1976 |
int retval = ISIS_OK; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1977 |
u_char lsp_id[ISIS_SYS_ID_LEN + 2]; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1978 |
+ static u_char null_lsp_id[ISIS_SYS_ID_LEN + 2]; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1979 |
#ifdef HAVE_IPV6 |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1980 |
struct prefix_ipv6 *ipv6; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1981 |
#endif /* HAVE_IPV6 */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1982 |
|
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1983 |
+#ifdef HAVE_TRILL |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1984 |
+ /* |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1985 |
+ * Check if computing SPF tree for another system. If computing SPF |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1986 |
+ * tree for another system (for TRILL) preload TENT by determining |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1987 |
+ * the neighboring systems of the root system by processing the root |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1988 |
+ * system LSP. |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1989 |
+ */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1990 |
+ if (isis->trill_active && |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1991 |
+ memcmp (root_sysid, isis->sysid, ISIS_SYS_ID_LEN) != 0) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1992 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1993 |
+ dnode_t *dnode; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1994 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1995 |
+ memcpy (lsp_id, root_sysid, ISIS_SYS_ID_LEN); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1996 |
+ LSP_PSEUDO_ID (lsp_id) = 0; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1997 |
+ LSP_FRAGMENT (lsp_id) = 0; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1998 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
1999 |
+ /* should add at least one */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2000 |
+ retval = ISIS_WARNING; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2001 |
+ for (ALL_DICT_NODES_RO(area->lspdb[level-1], dnode, lsp)) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2002 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2003 |
+ if (LSP_FRAGMENT (lsp->lsp_header->lsp_id)) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2004 |
+ continue; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2005 |
+ if (memcmp(lsp_id, lsp->lsp_header->lsp_id, ISIS_SYS_ID_LEN) != 0) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2006 |
+ continue; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2007 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2008 |
+ if (LSP_PSEUDO_ID (lsp->lsp_header->lsp_id)) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2009 |
+ retval = isis_spf_process_pseudo_lsp (spftree, lsp, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2010 |
+ DEFAULT_CIRCUIT_METRICS, 0, AF_TRILL, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2011 |
+ root_sysid, parent); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2012 |
+ else |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2013 |
+ retval = isis_spf_process_lsp (spftree, lsp, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2014 |
+ DEFAULT_CIRCUIT_METRICS, 1, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2015 |
+ AF_TRILL, root_sysid, parent); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2016 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2017 |
+ return retval; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2018 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2019 |
+#endif |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2020 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2021 |
+ root_lsp = isis_root_system_lsp (area, level, root_sysid); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2022 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2023 |
for (ALL_LIST_ELEMENTS_RO (area->circuit_list, cnode, circuit)) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2024 |
{ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2025 |
if (circuit->state != C_STATE_UP) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2026 |
@@ -800,7 +931,7 @@ isis_spf_preload_tent (struct isis_spftree *spftree, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2027 |
prefix.u.prefix4 = ipv4->prefix; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2028 |
prefix.prefixlen = ipv4->prefixlen; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2029 |
isis_spf_add_local (spftree, VTYPE_IPREACH_INTERNAL, &prefix, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2030 |
- NULL, 0, family); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2031 |
+ NULL, 0, family, parent, root_lsp); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2032 |
} |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2033 |
} |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2034 |
#ifdef HAVE_IPV6 |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2035 |
@@ -812,7 +943,7 @@ isis_spf_preload_tent (struct isis_spftree *spftree, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2036 |
prefix.prefixlen = ipv6->prefixlen; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2037 |
prefix.u.prefix6 = ipv6->prefix; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2038 |
isis_spf_add_local (spftree, VTYPE_IP6REACH_INTERNAL, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2039 |
- &prefix, NULL, 0, family); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2040 |
+ &prefix, NULL, 0, family, parent, root_lsp); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2041 |
} |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2042 |
} |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2043 |
#endif /* HAVE_IPV6 */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2044 |
@@ -845,21 +976,27 @@ isis_spf_preload_tent (struct isis_spftree *spftree, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2045 |
{ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2046 |
case ISIS_SYSTYPE_ES: |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2047 |
isis_spf_add_local (spftree, VTYPE_ES, adj->sysid, adj, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2048 |
- circuit->te_metric[level - 1], family); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2049 |
+ circuit->te_metric[level - 1], |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2050 |
+ family, parent, root_lsp); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2051 |
break; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2052 |
case ISIS_SYSTYPE_IS: |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2053 |
case ISIS_SYSTYPE_L1_IS: |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2054 |
case ISIS_SYSTYPE_L2_IS: |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2055 |
vertex = |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2056 |
- isis_spf_add_local (spftree, VTYPE_NONPSEUDO_IS, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2057 |
+ isis_spf_add_local (spftree, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2058 |
+ area->oldmetric ? VTYPE_NONPSEUDO_IS : |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2059 |
+ VTYPE_NONPSEUDO_TE_IS, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2060 |
adj->sysid, adj, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2061 |
- circuit->te_metric[level - 1], family); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2062 |
+ circuit->te_metric[level - 1], |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2063 |
+ family, parent, root_lsp); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2064 |
memcpy (lsp_id, adj->sysid, ISIS_SYS_ID_LEN); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2065 |
LSP_PSEUDO_ID (lsp_id) = 0; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2066 |
LSP_FRAGMENT (lsp_id) = 0; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2067 |
lsp = lsp_search (lsp_id, area->lspdb[level - 1]); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2068 |
if (!lsp) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2069 |
- zlog_warn ("No lsp found for IS adjacency"); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2070 |
+ zlog_warn ("No LSP %s found for IS adjacency L%d on %s (ID %u)", |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2071 |
+ rawlspid_print (lsp_id), level, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2072 |
+ circuit->interface->name, circuit->circuit_id); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2073 |
/* else { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2074 |
isis_spf_process_lsp (spftree, lsp, vertex->d_N, 1, family); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2075 |
} */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2076 |
@@ -878,22 +1015,34 @@ isis_spf_preload_tent (struct isis_spftree *spftree, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2077 |
memcpy (lsp_id, circuit->u.bc.l1_desig_is, ISIS_SYS_ID_LEN + 1); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2078 |
else |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2079 |
memcpy (lsp_id, circuit->u.bc.l2_desig_is, ISIS_SYS_ID_LEN + 1); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2080 |
+ /* can happen during DR reboot */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2081 |
+ if (memcmp (lsp_id, null_lsp_id, ISIS_SYS_ID_LEN + 1) == 0) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2082 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2083 |
+ if (isis->debugs & DEBUG_SPF_EVENTS) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2084 |
+ zlog_debug ("ISIS-Spf: no L%d DR on %s (ID %d)", |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2085 |
+ level, circuit->interface->name, circuit->circuit_id); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2086 |
+ continue; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2087 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2088 |
lsp = lsp_search (lsp_id, area->lspdb[level - 1]); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2089 |
adj = isis_adj_lookup (lsp_id, adjdb); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2090 |
/* if no adj, we are the dis or error */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2091 |
if (!adj && !circuit->u.bc.is_dr[level - 1]) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2092 |
{ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2093 |
- zlog_warn ("ISIS-Spf: No adjacency found for DR"); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2094 |
+ zlog_warn ("ISIS-Spf: No adjacency found for L%d DR SPF-root:%s on %s (ID %d)", |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2095 |
+ level, print_sys_hostname(root_sysid), |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2096 |
+ circuit->interface->name, circuit->circuit_id); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2097 |
} |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2098 |
if (lsp == NULL || lsp->lsp_header->rem_lifetime == 0) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2099 |
{ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2100 |
- zlog_warn ("ISIS-Spf: No lsp found for DR"); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2101 |
+ zlog_warn ("ISIS-Spf: No lsp found for L%d DR SPF-root:%s on %s (ID %d)", |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2102 |
+ level, print_sys_hostname(root_sysid), |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2103 |
+ circuit->interface->name, circuit->circuit_id); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2104 |
} |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2105 |
else |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2106 |
{ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2107 |
isis_spf_process_pseudo_lsp (spftree, lsp, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2108 |
- circuit->te_metric[level - 1], 0, family); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2109 |
- |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2110 |
+ circuit->te_metric[level - 1], 0, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2111 |
+ family, root_sysid, parent); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2112 |
} |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2113 |
} |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2114 |
else if (circuit->circ_type == CIRCUIT_T_P2P) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2115 |
@@ -905,19 +1054,22 @@ isis_spf_preload_tent (struct isis_spftree *spftree, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2116 |
{ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2117 |
case ISIS_SYSTYPE_ES: |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2118 |
isis_spf_add_local (spftree, VTYPE_ES, adj->sysid, adj, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2119 |
- circuit->te_metric[level - 1], family); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2120 |
+ circuit->te_metric[level - 1], family, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2121 |
+ parent, root_lsp); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2122 |
break; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2123 |
case ISIS_SYSTYPE_IS: |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2124 |
case ISIS_SYSTYPE_L1_IS: |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2125 |
case ISIS_SYSTYPE_L2_IS: |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2126 |
if (speaks (&adj->nlpids, family)) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2127 |
- isis_spf_add_local (spftree, VTYPE_NONPSEUDO_IS, adj->sysid, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2128 |
+ isis_spf_add_local (spftree, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2129 |
+ area->oldmetric ? VTYPE_NONPSEUDO_IS : |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2130 |
+ VTYPE_NONPSEUDO_TE_IS, adj->sysid, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2131 |
adj, circuit->te_metric[level - 1], |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2132 |
- family); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2133 |
+ family, parent, root_lsp); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2134 |
break; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2135 |
case ISIS_SYSTYPE_UNKNOWN: |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2136 |
default: |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2137 |
- zlog_warn ("isis_spf_preload_tent unknow adj type"); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2138 |
+ zlog_warn ("isis_spf_preload_tent unknown adj type"); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2139 |
break; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2140 |
} |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2141 |
} |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2142 |
@@ -946,11 +1098,17 @@ add_to_paths (struct isis_spftree *spftree, struct isis_vertex *vertex, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2143 |
listnode_add (spftree->paths, vertex); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2144 |
|
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2145 |
#ifdef EXTREME_DEBUG |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2146 |
- zlog_debug ("ISIS-Spf: added %s %s depth %d dist %d to PATHS", |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2147 |
+ zlog_debug ("ISIS-Spf: added %s %s %s depth %d dist %d to PATHS", |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2148 |
+ print_sys_hostname (vertex->N.id), |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2149 |
vtype2string (vertex->type), vid2string (vertex, buff), |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2150 |
vertex->depth, vertex->d_N); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2151 |
#endif /* EXTREME_DEBUG */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2152 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2153 |
+#ifdef HAVE_TRILL |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2154 |
+ if (!isis->trill_active && vertex->type > VTYPE_ES) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2155 |
+#else |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2156 |
if (vertex->type > VTYPE_ES) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2157 |
+#endif |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2158 |
{ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2159 |
if (listcount (vertex->Adj_N) > 0) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2160 |
isis_route_create ((struct prefix *) &vertex->N.prefix, vertex->d_N, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2161 |
@@ -969,16 +1127,17 @@ init_spt (struct isis_spftree *spftree) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2162 |
list_delete_all_node (spftree->tents); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2163 |
list_delete_all_node (spftree->paths); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2164 |
spftree->tents->del = spftree->paths->del = NULL; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2165 |
- |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2166 |
return; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2167 |
} |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2168 |
|
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2169 |
static int |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2170 |
-isis_run_spf (struct isis_area *area, int level, int family) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2171 |
+isis_run_spf (struct isis_area *area, int level, int family, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2172 |
+ u_char *sysid, struct isis_spftree *calc_spftree) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2173 |
{ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2174 |
int retval = ISIS_OK; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2175 |
struct listnode *node; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2176 |
struct isis_vertex *vertex; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2177 |
+ struct isis_vertex *root_vertex; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2178 |
struct isis_spftree *spftree = NULL; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2179 |
u_char lsp_id[ISIS_SYS_ID_LEN + 2]; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2180 |
struct isis_lsp *lsp; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2181 |
@@ -986,47 +1145,63 @@ isis_run_spf (struct isis_area *area, int level, int family) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2182 |
struct route_node *rode; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2183 |
struct isis_route_info *rinfo; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2184 |
|
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2185 |
- if (family == AF_INET) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2186 |
+ if (calc_spftree) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2187 |
+ spftree = calc_spftree; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2188 |
+#ifdef HAVE_TRILL |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2189 |
+ else if (family == AF_TRILL) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2190 |
+ spftree = area->spftree[level - 1]; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2191 |
+#endif |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2192 |
+ else if (family == AF_INET) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2193 |
spftree = area->spftree[level - 1]; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2194 |
#ifdef HAVE_IPV6 |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2195 |
else if (family == AF_INET6) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2196 |
spftree = area->spftree6[level - 1]; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2197 |
#endif |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2198 |
- |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2199 |
assert (spftree); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2200 |
+ assert (sysid); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2201 |
|
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2202 |
- /* Make all routes in current route table inactive. */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2203 |
- if (family == AF_INET) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2204 |
- table = area->route_table[level - 1]; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2205 |
+#ifdef HAVE_TRILL |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2206 |
+ if (family != AF_TRILL) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2207 |
+#endif |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2208 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2209 |
+ /* Make all routes in current route table inactive. */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2210 |
+ if (family == AF_INET) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2211 |
+ table = area->route_table[level - 1]; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2212 |
#ifdef HAVE_IPV6 |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2213 |
- else if (family == AF_INET6) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2214 |
- table = area->route_table6[level - 1]; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2215 |
+ else if (family == AF_INET6) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2216 |
+ table = area->route_table6[level - 1]; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2217 |
#endif |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2218 |
|
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2219 |
- for (rode = route_top (table); rode; rode = route_next (rode)) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2220 |
- { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2221 |
- if (rode->info == NULL) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2222 |
- continue; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2223 |
- rinfo = rode->info; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2224 |
+ for (rode = route_top (table); rode; rode = route_next (rode)) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2225 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2226 |
+ if (rode->info == NULL) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2227 |
+ continue; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2228 |
+ rinfo = rode->info; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2229 |
|
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2230 |
- UNSET_FLAG (rinfo->flag, ISIS_ROUTE_FLAG_ACTIVE); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2231 |
- } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2232 |
+ UNSET_FLAG (rinfo->flag, ISIS_ROUTE_FLAG_ACTIVE); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2233 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2234 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2235 |
|
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2236 |
/* |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2237 |
* C.2.5 Step 0 |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2238 |
*/ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2239 |
init_spt (spftree); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2240 |
/* a) */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2241 |
- isis_spf_add_self (spftree, area, level); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2242 |
+ root_vertex = isis_spf_add_root (spftree, area, level, sysid); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2243 |
/* b) */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2244 |
- retval = isis_spf_preload_tent (spftree, area, level, family); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2245 |
+ retval = isis_spf_preload_tent (spftree, area, level, family, sysid, root_vertex); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2246 |
+ if (retval != ISIS_OK) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2247 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2248 |
+ zlog_warn ("ISIS-Spf: failed to load TENT SPF-root:%s", print_sys_hostname(sysid)); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2249 |
+ goto out; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2250 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2251 |
|
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2252 |
/* |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2253 |
* C.2.7 Step 2 |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2254 |
*/ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2255 |
if (listcount (spftree->tents) == 0) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2256 |
{ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2257 |
- zlog_warn ("ISIS-Spf: TENT is empty"); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2258 |
+ zlog_warn ("ISIS-Spf: TENT is empty SPF-root:%s", print_sys_hostname(sysid)); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2259 |
goto out; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2260 |
} |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2261 |
|
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2262 |
@@ -1034,14 +1209,24 @@ isis_run_spf (struct isis_area *area, int level, int family) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2263 |
{ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2264 |
node = listhead (spftree->tents); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2265 |
vertex = listgetdata (node); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2266 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2267 |
+#ifdef EXTREME_DEBUG |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2268 |
+ zlog_debug ("ISIS-Spf: get TENT node %s %s depth %d dist %d to PATHS", |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2269 |
+ print_sys_hostname (vertex->N.id), |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2270 |
+ vtype2string (vertex->type), vertex->depth, vertex->d_N); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2271 |
+#endif /* EXTREME_DEBUG */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2272 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2273 |
/* Remove from tent list */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2274 |
list_delete_node (spftree->tents, node); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2275 |
if (isis_find_vertex (spftree->paths, vertex->N.id, vertex->type)) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2276 |
continue; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2277 |
add_to_paths (spftree, vertex, area, level); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2278 |
- if (vertex->type == VTYPE_PSEUDO_IS || |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2279 |
- vertex->type == VTYPE_NONPSEUDO_IS) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2280 |
- { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2281 |
+ switch (vertex->type) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2282 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2283 |
+ case VTYPE_PSEUDO_IS: |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2284 |
+ case VTYPE_NONPSEUDO_IS: |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2285 |
+ case VTYPE_PSEUDO_TE_IS: |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2286 |
+ case VTYPE_NONPSEUDO_TE_IS: |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2287 |
memcpy (lsp_id, vertex->N.id, ISIS_SYS_ID_LEN + 1); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2288 |
LSP_FRAGMENT (lsp_id) = 0; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2289 |
lsp = lsp_search (lsp_id, area->lspdb[level - 1]); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2290 |
@@ -1050,13 +1235,12 @@ isis_run_spf (struct isis_area *area, int level, int family) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2291 |
if (LSP_PSEUDO_ID (lsp_id)) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2292 |
{ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2293 |
isis_spf_process_pseudo_lsp (spftree, lsp, vertex->d_N, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2294 |
- vertex->depth, family); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2295 |
- |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2296 |
+ vertex->depth, family, sysid, vertex); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2297 |
} |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2298 |
else |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2299 |
{ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2300 |
isis_spf_process_lsp (spftree, lsp, vertex->d_N, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2301 |
- vertex->depth, family); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2302 |
+ vertex->depth, family, sysid, vertex); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2303 |
} |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2304 |
} |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2305 |
else |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2306 |
@@ -1064,11 +1248,16 @@ isis_run_spf (struct isis_area *area, int level, int family) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2307 |
zlog_warn ("ISIS-Spf: No LSP found for %s", |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2308 |
rawlspid_print (lsp_id)); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2309 |
} |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2310 |
+ break; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2311 |
+ default:; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2312 |
} |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2313 |
} |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2314 |
|
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2315 |
out: |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2316 |
- thread_add_event (master, isis_route_validate, area, 0); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2317 |
+#ifdef HAVE_TRILL |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2318 |
+ if (family != AF_TRILL) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2319 |
+#endif |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2320 |
+ thread_add_event (master, isis_route_validate, area, 0); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2321 |
spftree->lastrun = time (NULL); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2322 |
spftree->pending = 0; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2323 |
|
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2324 |
@@ -1098,7 +1287,7 @@ isis_run_spf_l1 (struct thread *thread) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2325 |
zlog_debug ("ISIS-Spf (%s) L1 SPF needed, periodic SPF", area->area_tag); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2326 |
|
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2327 |
if (area->ip_circuits) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2328 |
- retval = isis_run_spf (area, 1, AF_INET); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2329 |
+ retval = isis_run_spf (area, 1, AF_INET, isis->sysid, NULL); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2330 |
|
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2331 |
THREAD_TIMER_ON (master, area->spftree[0]->t_spf, isis_run_spf_l1, area, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2332 |
isis_jitter (PERIODIC_SPF_INTERVAL, 10)); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2333 |
@@ -1128,7 +1317,7 @@ isis_run_spf_l2 (struct thread *thread) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2334 |
zlog_debug ("ISIS-Spf (%s) L2 SPF needed, periodic SPF", area->area_tag); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2335 |
|
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2336 |
if (area->ip_circuits) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2337 |
- retval = isis_run_spf (area, 2, AF_INET); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2338 |
+ retval = isis_run_spf (area, 2, AF_INET, isis->sysid, NULL); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2339 |
|
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2340 |
THREAD_TIMER_ON (master, area->spftree[1]->t_spf, isis_run_spf_l2, area, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2341 |
isis_jitter (PERIODIC_SPF_INTERVAL, 10)); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2342 |
@@ -1153,9 +1342,8 @@ isis_spf_schedule (struct isis_area *area, int level) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2343 |
{ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2344 |
if (level == 1) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2345 |
THREAD_TIMER_ON (master, spftree->t_spf, isis_run_spf_l1, area, 60); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2346 |
- else |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2347 |
- THREAD_TIMER_ON (master, spftree->t_spf, isis_run_spf_l2, area, 60); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2348 |
- |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2349 |
+ else |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2350 |
+ THREAD_TIMER_ON (master, spftree->t_spf, isis_run_spf_l2, area, 60); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2351 |
spftree->pending = 1; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2352 |
return retval; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2353 |
} |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2354 |
@@ -1176,7 +1364,9 @@ isis_spf_schedule (struct isis_area *area, int level) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2355 |
else |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2356 |
{ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2357 |
spftree->pending = 0; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2358 |
- retval = isis_run_spf (area, level, AF_INET); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2359 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2360 |
+ retval = isis_run_spf (area, level, AF_INET, isis->sysid, NULL); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2361 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2362 |
if (level == 1) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2363 |
THREAD_TIMER_ON (master, spftree->t_spf, isis_run_spf_l1, area, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2364 |
isis_jitter (PERIODIC_SPF_INTERVAL, 10)); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2365 |
@@ -1211,7 +1401,7 @@ isis_run_spf6_l1 (struct thread *thread) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2366 |
zlog_debug ("ISIS-Spf (%s) L1 SPF needed, periodic SPF", area->area_tag); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2367 |
|
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2368 |
if (area->ipv6_circuits) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2369 |
- retval = isis_run_spf (area, 1, AF_INET6); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2370 |
+ retval = isis_run_spf (area, 1, AF_INET6, isis->sysid, NULL); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2371 |
|
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2372 |
THREAD_TIMER_ON (master, area->spftree6[0]->t_spf, isis_run_spf6_l1, area, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2373 |
isis_jitter (PERIODIC_SPF_INTERVAL, 10)); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2374 |
@@ -1241,7 +1431,7 @@ isis_run_spf6_l2 (struct thread *thread) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2375 |
zlog_debug ("ISIS-Spf (%s) L2 SPF needed, periodic SPF.", area->area_tag); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2376 |
|
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2377 |
if (area->ipv6_circuits) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2378 |
- retval = isis_run_spf (area, 2, AF_INET6); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2379 |
+ retval = isis_run_spf (area, 2, AF_INET6, isis->sysid, NULL); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2380 |
|
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2381 |
THREAD_TIMER_ON (master, area->spftree6[1]->t_spf, isis_run_spf6_l2, area, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2382 |
isis_jitter (PERIODIC_SPF_INTERVAL, 10)); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2383 |
@@ -1289,7 +1479,7 @@ isis_spf_schedule6 (struct isis_area *area, int level) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2384 |
else |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2385 |
{ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2386 |
spftree->pending = 0; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2387 |
- retval = isis_run_spf (area, level, AF_INET6); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2388 |
+ retval = isis_run_spf (area, level, AF_INET6, isis->sysid, NULL); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2389 |
|
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2390 |
if (level == 1) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2391 |
THREAD_TIMER_ON (master, spftree->t_spf, isis_run_spf6_l1, area, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2392 |
@@ -1303,51 +1493,174 @@ isis_spf_schedule6 (struct isis_area *area, int level) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2393 |
} |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2394 |
#endif |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2395 |
|
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2396 |
+#ifdef HAVE_TRILL |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2397 |
+static int |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2398 |
+trill_complete_spf(struct isis_area *area) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2399 |
+{ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2400 |
+ int retval; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2401 |
+ dnode_t *dnode; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2402 |
+ nicknode_t *tnode; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2403 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2404 |
+ retval = isis_run_spf (area, TRILL_ISIS_LEVEL, AF_TRILL, isis->sysid, NULL); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2405 |
+ if (retval != ISIS_OK) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2406 |
+ zlog_warn ("ISIS-Spf running spf for system returned:%d", retval); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2407 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2408 |
+ /* |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2409 |
+ * Run SPF for all other RBridges in the campus as well to |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2410 |
+ * compute the distribution trees with other RBridges in |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2411 |
+ * the campus as root. |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2412 |
+ */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2413 |
+ for (ALL_DICT_NODES_RO(area->trill->nickdb, dnode, tnode)) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2414 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2415 |
+ retval = isis_run_spf (area, TRILL_ISIS_LEVEL, AF_TRILL, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2416 |
+ tnode->info.sysid, tnode->rdtree); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2417 |
+ if (isis->debugs & DEBUG_SPF_EVENTS) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2418 |
+ zlog_debug ("ISIS-Spf running spf for:%s", |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2419 |
+ print_sys_hostname (tnode->info.sysid)); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2420 |
+ if (retval != ISIS_OK) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2421 |
+ zlog_warn ("ISIS-Spf running spf for:%s returned:%d", |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2422 |
+ print_sys_hostname (tnode->info.sysid), retval); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2423 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2424 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2425 |
+ /* |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2426 |
+ * Process computed SPF trees to create TRILL |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2427 |
+ * forwarding and adjacency tables. |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2428 |
+ */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2429 |
+ trill_process_spf (area); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2430 |
+ return retval; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2431 |
+} |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2432 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2433 |
+static int |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2434 |
+isis_run_spf_trill (struct thread *thread) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2435 |
+{ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2436 |
+ struct isis_area *area; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2437 |
+ int retval; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2438 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2439 |
+ area = THREAD_ARG (thread); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2440 |
+ assert (area); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2441 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2442 |
+ area->spftree[0]->t_spf = NULL; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2443 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2444 |
+ if (!(area->is_type & IS_LEVEL_1)) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2445 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2446 |
+ if (isis->debugs & DEBUG_SPF_EVENTS) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2447 |
+ zlog_warn ("ISIS-SPF (%s) area does not share level", area->area_tag); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2448 |
+ return ISIS_WARNING; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2449 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2450 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2451 |
+ if (isis->debugs & DEBUG_SPF_EVENTS) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2452 |
+ zlog_debug ("ISIS-Spf (%s) L1 SPF needed, periodic SPF", area->area_tag); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2453 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2454 |
+ retval = trill_complete_spf(area); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2455 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2456 |
+ THREAD_TIMER_ON (master, area->spftree[0]->t_spf, isis_run_spf_trill, area, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2457 |
+ isis_jitter (PERIODIC_SPF_INTERVAL, 10)); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2458 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2459 |
+ return retval; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2460 |
+} |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2461 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2462 |
+int |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2463 |
+isis_spf_schedule_trill (struct isis_area *area) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2464 |
+{ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2465 |
+ int retval = ISIS_OK; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2466 |
+ struct isis_spftree *spftree = area->spftree[TRILL_ISIS_LEVEL - 1]; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2467 |
+ time_t diff, now = time (NULL); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2468 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2469 |
+ if (spftree->pending) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2470 |
+ return retval; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2471 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2472 |
+ diff = now - spftree->lastrun; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2473 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2474 |
+ /* FIXME: let's wait a minute before doing the SPF */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2475 |
+ if (now - isis->uptime < 60 || isis->uptime == 0) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2476 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2477 |
+ THREAD_TIMER_ON (master, spftree->t_spf, isis_run_spf_trill, area, 60); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2478 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2479 |
+ spftree->pending = 1; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2480 |
+ return retval; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2481 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2482 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2483 |
+ THREAD_TIMER_OFF (spftree->t_spf); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2484 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2485 |
+ if (diff < MINIMUM_SPF_INTERVAL) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2486 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2487 |
+ THREAD_TIMER_ON (master, spftree->t_spf, isis_run_spf_trill, area, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2488 |
+ MINIMUM_SPF_INTERVAL - diff); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2489 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2490 |
+ spftree->pending = 1; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2491 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2492 |
+ else |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2493 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2494 |
+ spftree->pending = 0; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2495 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2496 |
+ retval = trill_complete_spf(area); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2497 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2498 |
+ THREAD_TIMER_ON (master, spftree->t_spf, isis_run_spf_trill, area, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2499 |
+ isis_jitter (PERIODIC_SPF_INTERVAL, 10)); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2500 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2501 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2502 |
+ return retval; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2503 |
+} |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2504 |
+#endif /* HAVE_TRILL */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2505 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2506 |
static void |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2507 |
-isis_print_paths (struct vty *vty, struct list *paths) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2508 |
+isis_print_paths (struct vty *vty, struct list *paths, u_char *root_sysid) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2509 |
{ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2510 |
struct listnode *node; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2511 |
+ struct listnode *cnode; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2512 |
struct isis_vertex *vertex; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2513 |
- struct isis_dynhn *dyn, *nh_dyn = NULL; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2514 |
+ struct isis_vertex *cvertex; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2515 |
struct isis_adjacency *adj; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2516 |
#if 0 |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2517 |
u_char buff[255]; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2518 |
#endif /* 0 */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2519 |
|
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2520 |
vty_out (vty, "System Id Metric Next-Hop" |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2521 |
- " Interface SNPA%s", VTY_NEWLINE); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2522 |
+ " Interface SNPA Tree%s", VTY_NEWLINE); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2523 |
|
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2524 |
for (ALL_LIST_ELEMENTS_RO (paths, node, vertex)) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2525 |
{ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2526 |
- if (vertex->type != VTYPE_NONPSEUDO_IS) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2527 |
+ if (vertex->type != VTYPE_NONPSEUDO_IS && |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2528 |
+ vertex->type != VTYPE_NONPSEUDO_TE_IS) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2529 |
continue; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2530 |
- if (memcmp (vertex->N.id, isis->sysid, ISIS_SYS_ID_LEN) == 0) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2531 |
+ if (memcmp (vertex->N.id, root_sysid, ISIS_SYS_ID_LEN) == 0) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2532 |
{ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2533 |
- vty_out (vty, "%s --%s", host.name?host.name:"", |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2534 |
- VTY_NEWLINE); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2535 |
+ vty_out (vty, "%-20s %-10s", print_sys_hostname (root_sysid), "--"); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2536 |
+ vty_out (vty, "%-48s", ""); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2537 |
} |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2538 |
else |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2539 |
{ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2540 |
- dyn = dynhn_find_by_id ((u_char *) vertex->N.id); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2541 |
- adj = listgetdata (listhead (vertex->Adj_N)); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2542 |
- if (adj) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2543 |
+ if (listhead (vertex->Adj_N) && |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2544 |
+ (adj = listgetdata (listhead (vertex->Adj_N)))) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2545 |
{ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2546 |
- nh_dyn = dynhn_find_by_id (adj->sysid); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2547 |
- vty_out (vty, "%-20s %-10u %-20s %-11s %-5s%s", |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2548 |
- (dyn != NULL) ? dyn->name.name : |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2549 |
- (const u_char *)rawlspid_print ((u_char *) vertex->N.id), |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2550 |
- vertex->d_N, (nh_dyn != NULL) ? nh_dyn->name.name : |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2551 |
- (const u_char *)rawlspid_print (adj->sysid), |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2552 |
+ vty_out (vty, "%-20s %-10u %-20s %-11s %-8s", |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2553 |
+ print_sys_hostname (vertex->N.id), |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2554 |
+ vertex->d_N, print_sys_hostname (adj->sysid), |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2555 |
adj->circuit->interface->name, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2556 |
- snpa_print (adj->snpa), VTY_NEWLINE); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2557 |
+ snpa_print (adj->snpa)); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2558 |
} |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2559 |
else |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2560 |
{ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2561 |
- vty_out (vty, "%s %u %s", dyn ? dyn->name.name : |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2562 |
- (const u_char *) rawlspid_print (vertex->N.id), |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2563 |
- vertex->d_N, VTY_NEWLINE); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2564 |
+ vty_out (vty, "%-20s %-10u %-48s ", |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2565 |
+ print_sys_hostname (vertex->N.id), |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2566 |
+ vertex->d_N, ""); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2567 |
} |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2568 |
} |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2569 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2570 |
+ if (vertex->parent) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2571 |
+ vty_out (vty, " %s(%d) :-> ", |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2572 |
+ print_sys_hostname (vertex->parent->N.id), vertex->type); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2573 |
+ else |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2574 |
+ vty_out (vty, " :> "); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2575 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2576 |
+ if (listcount (vertex->children) > 0) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2577 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2578 |
+ for (ALL_LIST_ELEMENTS_RO (vertex->children, cnode, cvertex)) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2579 |
+ vty_out (vty, "%s(%d),", |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2580 |
+ print_sys_hostname(cvertex->N.id), cvertex->type); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2581 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2582 |
+ vty_out (vty, "%s", VTY_NEWLINE); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2583 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2584 |
#if 0 |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2585 |
vty_out (vty, "%s %s %u %s", vtype2string (vertex->type), |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2586 |
vid2string (vertex, buff), vertex->d_N, VTY_NEWLINE); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2587 |
@@ -1355,6 +1668,26 @@ isis_print_paths (struct vty *vty, struct list *paths) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2588 |
} |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2589 |
} |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2590 |
|
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2591 |
+#ifdef HAVE_TRILL |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2592 |
+static void |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2593 |
+trill_print_paths (struct vty *vty, struct isis_area *area) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2594 |
+{ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2595 |
+ dnode_t *dnode; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2596 |
+ nicknode_t *tnode; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2597 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2598 |
+ for (ALL_DICT_NODES_RO(area->trill->nickdb, dnode, tnode)) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2599 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2600 |
+ if (tnode->rdtree && tnode->rdtree->paths->count > 0) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2601 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2602 |
+ vty_out (vty, "%sRBridge distribution paths for RBridge:%s%s", |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2603 |
+ VTY_NEWLINE, print_sys_hostname (tnode->info.sysid), |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2604 |
+ VTY_NEWLINE); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2605 |
+ isis_print_paths (vty, tnode->rdtree->paths, tnode->info.sysid); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2606 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2607 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2608 |
+} |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2609 |
+#endif /* HAVE_TRILL */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2610 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2611 |
DEFUN (show_isis_topology, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2612 |
show_isis_topology_cmd, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2613 |
"show isis topology", |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2614 |
@@ -1381,7 +1714,7 @@ DEFUN (show_isis_topology, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2615 |
{ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2616 |
vty_out (vty, "IS-IS paths to level-%d routers that speak IP%s", |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2617 |
level + 1, VTY_NEWLINE); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2618 |
- isis_print_paths (vty, area->spftree[level]->paths); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2619 |
+ isis_print_paths (vty, area->spftree[level]->paths, isis->sysid); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2620 |
} |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2621 |
#ifdef HAVE_IPV6 |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2622 |
if (area->ipv6_circuits > 0 && area->spftree6[level] |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2623 |
@@ -1390,10 +1723,15 @@ DEFUN (show_isis_topology, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2624 |
vty_out (vty, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2625 |
"IS-IS paths to level-%d routers that speak IPv6%s", |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2626 |
level + 1, VTY_NEWLINE); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2627 |
- isis_print_paths (vty, area->spftree6[level]->paths); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2628 |
+ isis_print_paths (vty, area->spftree6[level]->paths, isis->sysid); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2629 |
} |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2630 |
#endif /* HAVE_IPV6 */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2631 |
} |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2632 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2633 |
+#ifdef HAVE_TRILL |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2634 |
+ if (isis->trill_active) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2635 |
+ trill_print_paths (vty, area); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2636 |
+#endif |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2637 |
} |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2638 |
|
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2639 |
return CMD_SUCCESS; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2640 |
@@ -1423,7 +1761,7 @@ DEFUN (show_isis_topology_l1, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2641 |
{ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2642 |
vty_out (vty, "IS-IS paths to level-1 routers that speak IP%s", |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2643 |
VTY_NEWLINE); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2644 |
- isis_print_paths (vty, area->spftree[0]->paths); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2645 |
+ isis_print_paths (vty, area->spftree[0]->paths, isis->sysid); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2646 |
} |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2647 |
#ifdef HAVE_IPV6 |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2648 |
if (area->ipv6_circuits > 0 && area->spftree6[0] |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2649 |
@@ -1431,9 +1769,13 @@ DEFUN (show_isis_topology_l1, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2650 |
{ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2651 |
vty_out (vty, "IS-IS paths to level-1 routers that speak IPv6%s", |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2652 |
VTY_NEWLINE); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2653 |
- isis_print_paths (vty, area->spftree6[0]->paths); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2654 |
+ isis_print_paths (vty, area->spftree6[0]->paths, isis->sysid); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2655 |
} |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2656 |
#endif /* HAVE_IPV6 */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2657 |
+#ifdef HAVE_TRILL |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2658 |
+ if (isis->trill_active) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2659 |
+ trill_print_paths (vty, area); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2660 |
+#endif |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2661 |
} |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2662 |
|
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2663 |
return CMD_SUCCESS; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2664 |
@@ -1463,7 +1805,7 @@ DEFUN (show_isis_topology_l2, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2665 |
{ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2666 |
vty_out (vty, "IS-IS paths to level-2 routers that speak IP%s", |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2667 |
VTY_NEWLINE); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2668 |
- isis_print_paths (vty, area->spftree[1]->paths); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2669 |
+ isis_print_paths (vty, area->spftree[1]->paths, isis->sysid); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2670 |
} |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2671 |
#ifdef HAVE_IPV6 |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2672 |
if (area->ipv6_circuits > 0 && area->spftree6[1] |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2673 |
@@ -1471,7 +1813,7 @@ DEFUN (show_isis_topology_l2, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2674 |
{ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2675 |
vty_out (vty, "IS-IS paths to level-2 routers that speak IPv6%s", |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2676 |
VTY_NEWLINE); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2677 |
- isis_print_paths (vty, area->spftree6[1]->paths); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2678 |
+ isis_print_paths (vty, area->spftree6[1]->paths, isis->sysid); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2679 |
} |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2680 |
#endif /* HAVE_IPV6 */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2681 |
} |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2682 |
diff --git isisd/isis_spf.h isisd/isis_spf.h |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2683 |
index 6bdab2d..ece9896 100644 |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2684 |
--- isisd/isis_spf.h |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2685 |
+++ isisd/isis_spf.h |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2686 |
@@ -54,11 +54,12 @@ struct isis_vertex |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2687 |
struct prefix prefix; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2688 |
} N; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2689 |
|
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2690 |
- struct isis_lsp *lsp; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2691 |
+ struct isis_lsp *lsp; /* referring LSP (the LSP this vertex was learnt from) */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2692 |
u_int32_t d_N; /* d(N) Distance from this IS */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2693 |
u_int16_t depth; /* The depth in the imaginary tree */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2694 |
- |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2695 |
- struct list *Adj_N; /* {Adj(N)} */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2696 |
+ struct list *Adj_N; /* {Adj(N)} next hop or neighbor list */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2697 |
+ struct isis_vertex *parent; /* parent and child links used to find adjacencies on tree */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2698 |
+ struct list *children; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2699 |
}; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2700 |
|
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2701 |
struct isis_spftree |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2702 |
@@ -72,10 +73,16 @@ struct isis_spftree |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2703 |
u_int32_t timerun; /* statistics */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2704 |
}; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2705 |
|
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2706 |
+struct isis_spftree * isis_spftree_new (void); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2707 |
+void isis_spftree_del (struct isis_spftree *spftree); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2708 |
void spftree_area_init (struct isis_area *area); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2709 |
+void spftree_area_del (struct isis_area *area); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2710 |
int isis_spf_schedule (struct isis_area *area, int level); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2711 |
void isis_spf_cmds_init (void); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2712 |
#ifdef HAVE_IPV6 |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2713 |
int isis_spf_schedule6 (struct isis_area *area, int level); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2714 |
#endif |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2715 |
+#ifdef HAVE_TRILL |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2716 |
+int isis_spf_schedule_trill (struct isis_area *area); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2717 |
+#endif |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2718 |
#endif /* _ZEBRA_ISIS_SPF_H */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2719 |
diff --git isisd/isis_tlv.c isisd/isis_tlv.c |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2720 |
index 94fa65e..0690243 100644 |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2721 |
--- isisd/isis_tlv.c |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2722 |
+++ isisd/isis_tlv.c |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2723 |
@@ -43,13 +43,6 @@ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2724 |
#include "isisd/isis_pdu.h" |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2725 |
#include "isisd/isis_lsp.h" |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2726 |
|
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2727 |
-extern struct isis *isis; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2728 |
- |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2729 |
-/* |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2730 |
- * Prototypes. |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2731 |
- */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2732 |
-int add_tlv (u_char, u_char, u_char *, struct stream *); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2733 |
- |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2734 |
void |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2735 |
free_tlv (void *val) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2736 |
{ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2737 |
@@ -93,7 +86,10 @@ free_tlvs (struct tlvs *tlvs) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2738 |
if (tlvs->ipv6_reachs) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2739 |
list_delete (tlvs->ipv6_reachs); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2740 |
#endif /* HAVE_IPV6 */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2741 |
- |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2742 |
+ if (tlvs->router_capabilities) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2743 |
+ list_delete (tlvs->router_capabilities); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2744 |
+ if (tlvs->port_capabilities) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2745 |
+ list_delete (tlvs->port_capabilities); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2746 |
return; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2747 |
} |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2748 |
|
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2749 |
@@ -714,6 +710,28 @@ parse_tlvs (char *areatag, u_char * stream, int size, u_int32_t * expected, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2750 |
pnt += length; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2751 |
break; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2752 |
|
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2753 |
+ case ROUTER_CAPABILITY: |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2754 |
+ /* +------+------+------+------+------+-------+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2755 |
+ * |Length| Router ID | Flags | |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2756 |
+ * +------+------+------+------+------+-------+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2757 |
+ * | optional sub-TLVs (0-250 octets) | |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2758 |
+ * +------+------+------+------+------+-------+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2759 |
+ */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2760 |
+ *found |= TLVFLAG_ROUTER_CAPABILITY; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2761 |
+ if (tlvs->router_capabilities == NULL) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2762 |
+ tlvs->router_capabilities = list_new (); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2763 |
+ listnode_add (tlvs->router_capabilities, (pnt - 1)); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2764 |
+ pnt += length; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2765 |
+ break; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2766 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2767 |
+ case PORT_CAPABILITY: |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2768 |
+ *found |= TLVFLAG_PORT_CAPABILITY; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2769 |
+ if (tlvs->port_capabilities == NULL) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2770 |
+ tlvs->port_capabilities = list_new (); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2771 |
+ listnode_add (tlvs->port_capabilities, (pnt - 1)); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2772 |
+ pnt += length; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2773 |
+ break; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2774 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2775 |
default: |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2776 |
zlog_warn ("ISIS-TLV (%s): unsupported TLV type %d, length %d", |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2777 |
areatag, type, length); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2778 |
@@ -731,7 +749,8 @@ int |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2779 |
add_tlv (u_char tag, u_char len, u_char * value, struct stream *stream) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2780 |
{ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2781 |
|
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2782 |
- if (STREAM_SIZE (stream) - stream_get_endp (stream) < (unsigned) len + 2) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2783 |
+ if (STREAM_SIZE (stream) - stream_get_endp (stream) < |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2784 |
+ (unsigned) len + TLFLDS_LEN) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2785 |
{ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2786 |
zlog_warn ("No room for TLV of type %d", tag); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2787 |
return ISIS_WARNING; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2788 |
@@ -739,7 +758,8 @@ add_tlv (u_char tag, u_char len, u_char * value, struct stream *stream) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2789 |
|
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2790 |
stream_putc (stream, tag); /* TAG */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2791 |
stream_putc (stream, len); /* LENGTH */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2792 |
- stream_put (stream, value, (int) len); /* VALUE */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2793 |
+ if (len > 0) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2794 |
+ stream_put (stream, value, (int) len); /* VALUE */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2795 |
|
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2796 |
#ifdef EXTREME_DEBUG |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2797 |
zlog_debug ("Added TLV %d len %d", tag, len); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2798 |
@@ -747,6 +767,52 @@ add_tlv (u_char tag, u_char len, u_char * value, struct stream *stream) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2799 |
return ISIS_OK; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2800 |
} |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2801 |
|
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2802 |
+/* |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2803 |
+ * Add a subTLV to an existing TLV. Returns ISIS_ERROR if it can't fit in the |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2804 |
+ * stream at all. Returns ISIS_WARNING if it doesn't fit in the current TLV |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2805 |
+ * (but may fit in another one). |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2806 |
+ */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2807 |
+int |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2808 |
+add_subtlv (u_char tag, u_char len, u_char * value, size_t tlvpos, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2809 |
+ struct stream *stream) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2810 |
+{ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2811 |
+ unsigned newlen; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2812 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2813 |
+ /* Compute new outer TLV length */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2814 |
+ newlen = stream_getc_from(stream, tlvpos + 1) + (unsigned) len + TLFLDS_LEN; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2815 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2816 |
+ /* Check if it's possible to fit the subTLV in the stream at all */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2817 |
+ if (STREAM_SIZE (stream) - stream_get_endp (stream) < |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2818 |
+ (unsigned) len + TLFLDS_LEN || |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2819 |
+ len > 255 - TLFLDS_LEN) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2820 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2821 |
+ zlog_debug ("No room for subTLV %d len %d", tag, len); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2822 |
+ return ISIS_ERROR; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2823 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2824 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2825 |
+ /* Check if it'll fit in the current TLV */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2826 |
+ if (newlen > 255) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2827 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2828 |
+#ifdef EXTREME_DEBUG |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2829 |
+ /* extreme debug only, because repeating TLV is usually possible */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2830 |
+ zlog_debug ("No room for subTLV %d len %d in TLV %d", tag, len, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2831 |
+ stream_getc_from(stream, tlvpos)); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2832 |
+#endif /* EXTREME DEBUG */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2833 |
+ return ISIS_WARNING; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2834 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2835 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2836 |
+ stream_putc (stream, tag); /* TAG */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2837 |
+ stream_putc (stream, len); /* LENGTH */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2838 |
+ stream_put (stream, value, (int) len); /* VALUE */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2839 |
+ stream_putc_at (stream, tlvpos + 1, newlen); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2840 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2841 |
+#ifdef EXTREME_DEBUG |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2842 |
+ zlog_debug ("Added subTLV %d len %d to TLV %d", tag, len, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2843 |
+ stream_getc_from(stream, tlvpos)); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2844 |
+#endif /* EXTREME DEBUG */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2845 |
+ return ISIS_OK; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2846 |
+} |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2847 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2848 |
int |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2849 |
tlv_add_area_addrs (struct list *area_addrs, struct stream *stream) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2850 |
{ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2851 |
diff --git isisd/isis_tlv.h isisd/isis_tlv.h |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2852 |
index fc9f35f..f421627 100644 |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2853 |
--- isisd/isis_tlv.h |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2854 |
+++ isisd/isis_tlv.h |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2855 |
@@ -60,6 +60,7 @@ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2856 |
* P2P Adjacency State 240 y n n RFC3373 |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2857 |
* IIH Sequence Number 241 y n n draft-shen-isis-iih-sequence |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2858 |
* Router Capability 242 - - - draft-ietf-isis-caps |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2859 |
+ * Port Capability 243 n y n draft-eastlake-trill-bridge-isis |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2860 |
* |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2861 |
* |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2862 |
* IS Reachability sub-TLVs we (should) support. |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2863 |
@@ -85,6 +86,28 @@ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2864 |
* 32bit administrative tag 1 draft-ietf-isis-admin-tags |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2865 |
* 64bit administrative tag 2 draft-ietf-isis-admin-tags |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2866 |
* Management prefix color 117 draft-ietf-isis-wg-multi-topology |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2867 |
+ * |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2868 |
+ * |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2869 |
+ * Router Capability sub-TLVs we support (Values TBD, temporary for now). |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2870 |
+ * ____________________________________________________________________________ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2871 |
+ * Name Value Status |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2872 |
+ * ____________________________________________________________________________ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2873 |
+ * TRILL Flags 21 draft-ietf-trill-rbridge-protocol |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2874 |
+ * TRILL Nickname and Tree Root 22 draft-ietf-trill-rbridge-protocol |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2875 |
+ * TRILL Distribution Tree Roots 23 draft-ietf-trill-rbridge-protocol |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2876 |
+ * TRILL VLANs and Bridge Roots 24 draft-ietf-trill-rbridge-protocol |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2877 |
+ * TRILL ESADI Participation 25 draft-ietf-trill-rbridge-protocol |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2878 |
+ * TRILL VLAN Groups 26 draft-ietf-trill-rbridge-protocol |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2879 |
+ * TRILL VLAN Mapping 27 draft-ietf-trill-rbridge-protocol |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2880 |
+ * |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2881 |
+ * |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2882 |
+ * Port Capability sub-TLVs we support |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2883 |
+ * ____________________________________________________________________________ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2884 |
+ * Name Value Status |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2885 |
+ * ____________________________________________________________________________ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2886 |
+ * TRILL Special VLANs and Flags 10 draft-ietf-trill-rbridge-protocol |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2887 |
+ * TRILL Enabled VLANs 11 draft-ietf-trill-rbridge-protocol |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2888 |
+ * TRILL Appointed Forwarders 12 draft-ietf-trill-rbridge-protocol |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2889 |
*/ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2890 |
|
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2891 |
#define AREA_ADDRESSES 1 |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2892 |
@@ -109,12 +132,44 @@ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2893 |
#define IPV6_ADDR 232 |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2894 |
#define IPV6_REACHABILITY 236 |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2895 |
#define WAY3_HELLO 240 |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2896 |
+#define ROUTER_CAPABILITY 242 |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2897 |
+#define PORT_CAPABILITY 243 /* TBD TRILL port capability TLV */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2898 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2899 |
+/* ROUTER_CAPABILITY sub-TLVs for TRILL */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2900 |
+#define RCSTLV_TRILL_FLAGS 21 /* TBD Flags */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2901 |
+#define RCSTLV_TRILL_NICKNAME 22 /* TBD Nickname and Tree Root */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2902 |
+#define RCSTLV_TRILL_TREE_ROOTS 23 /* TBD Distribution Tree Roots */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2903 |
+#define RCSTLV_TRILL_VLANSROOTS 24 /* TBD VLANs and Bridge Roots */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2904 |
+#define RCSTLV_TRILL_ESADI 25 /* TBD ESADI Participation */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2905 |
+#define RCSTLV_TRILL_VLANGROUPS 26 /* TBD VLAN Groups */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2906 |
+#define RCSTLV_TRILL_VLANMAPPING 27 /* TBD VLAN Mapping */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2907 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2908 |
+/* PORT_CAPABILITY sub-TLVs for TRILL */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2909 |
+#define PCSTLV_VLANS 10 /* Special VLANs and Flags */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2910 |
+#define PCSTLV_ENABLEDVLANS 11 /* Enabled VLANs */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2911 |
+#define PCSTLV_APPFORWARDERS 12 /* Appointed Forwarders */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2912 |
|
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2913 |
#define IS_NEIGHBOURS_LEN (ISIS_SYS_ID_LEN + 5) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2914 |
#define LAN_NEIGHBOURS_LEN 6 |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2915 |
#define LSP_ENTRIES_LEN (10 + ISIS_SYS_ID_LEN) /* FIXME: should be entry */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2916 |
#define IPV4_REACH_LEN 12 |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2917 |
#define IPV6_REACH_LEN 22 |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2918 |
+#define TLFLDS_LEN 2 /* Length of Type & Len 8-bit fields */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2919 |
+#define ROUTER_CAPABILITY_MIN_LEN 5 /* Min len of router capability TLV */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2920 |
+#define ROUTER_CAPABILITY_MAX_LEN 250 /* Max len of router capability TLV */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2921 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2922 |
+/* TRILL Flags sub-TLV */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2923 |
+#define TRILL_FLAGS_SUBTLV_MIN_LEN 1 /* Len of sub-TLV val */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2924 |
+#define TRILL_FLAGS_V0 0x80 |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2925 |
+#define TRILL_FLAGS_V1 0x40 |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2926 |
+#define TRILL_FLAGS_V2 0x20 |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2927 |
+#define TRILL_FLAGS_V3 0x10 |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2928 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2929 |
+#define TRILL_NICKNAME_SUBTLV_MIN_LEN 7 /* Len of TRILL nickname sub-TLV value field */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2930 |
+#define TRILL_VLANSNBRIROOTS_SUBTLV_MIN_LEN 4 /* Len of variable len TRILL VLANs and Bridge Roots sub-TLV value field */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2931 |
+#define PCSTLV_VLANS_LEN 4 /* Exact len of port capability VLANs sub-TLV */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2932 |
+#define PCSTLV_VLANFWDERS_MIN_LEN 6 /* Min. len of each appointed forwarders sub-TLV */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2933 |
+#define PCSTLV_ENABLEDVLANS_MIN_LEN 3 /* Min. len of enabled VLANS sub-TLV */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2934 |
|
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2935 |
/* struct for neighbor */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2936 |
struct is_neigh |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2937 |
@@ -131,6 +186,15 @@ struct te_is_neigh |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2938 |
u_char sub_tlvs_length; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2939 |
}; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2940 |
|
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2941 |
+/* Decode and encode three-octet metric into host byte order integer */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2942 |
+#define GET_TE_METRIC(t) \ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2943 |
+ (((unsigned)(t)->te_metric[0]<<16) | ((t)->te_metric[1]<<8) | \ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2944 |
+ (t)->te_metric[2]) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2945 |
+#define SET_TE_METRIC(t, m) \ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2946 |
+ (((t)->te_metric[0] = (m) >> 16), \ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2947 |
+ ((t)->te_metric[1] = (m) >> 8), \ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2948 |
+ ((t)->te_metric[2] = (m))) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2949 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2950 |
/* struct for es neighbors */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2951 |
struct es_neigh |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2952 |
{ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2953 |
@@ -213,7 +277,6 @@ struct ipv6_reachability |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2954 |
u_char prefix_len; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2955 |
u_char prefix[16]; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2956 |
}; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2957 |
-#endif /* HAVE_IPV6 */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2958 |
|
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2959 |
/* bits in control_info */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2960 |
#define CTRL_INFO_DIRECTION 0x80 |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2961 |
@@ -223,6 +286,92 @@ struct ipv6_reachability |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2962 |
#define DISTRIBUTION_INTERNAL 0 |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2963 |
#define DISTRIBUTION_EXTERNAL 1 |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2964 |
#define CTRL_INFO_SUBTLVS 0x20 |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2965 |
+#endif /* HAVE_IPV6 */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2966 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2967 |
+/* internal trill nickname struct */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2968 |
+struct trill_nickname |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2969 |
+{ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2970 |
+ u_int16_t name; /* network byte order */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2971 |
+ u_int8_t priority; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2972 |
+}; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2973 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2974 |
+/* Router Capability TLV: used in LSPs */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2975 |
+struct router_capability_tlv |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2976 |
+{ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2977 |
+ u_char router_id[4]; /* 4 octet Router ID */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2978 |
+ u_int8_t flags; /* 1 octet flags */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2979 |
+}; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2980 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2981 |
+/* internal router capability struct, includes tlv length */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2982 |
+struct router_capability |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2983 |
+{ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2984 |
+ u_int8_t len; /* total length of the TLV */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2985 |
+ struct router_capability_tlv rt_cap_tlv; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2986 |
+}; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2987 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2988 |
+/* Port Capability TLV: used in Hellos */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2989 |
+struct port_capability_tlv |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2990 |
+{ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2991 |
+ u_int8_t len; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2992 |
+ u_int8_t value[1]; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2993 |
+}; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2994 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2995 |
+#ifdef __SUNPRO_C |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2996 |
+#pragma pack(1) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2997 |
+#endif |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2998 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
2999 |
+/* LSP: ROUTER_CAPABILITY RCSTLV_TRILL_NICKNAME */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3000 |
+struct trill_nickname_subtlv |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3001 |
+{ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3002 |
+ u_int8_t tn_priority; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3003 |
+ u_int16_t tn_nickname; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3004 |
+ u_int16_t tn_trootpri; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3005 |
+ u_int16_t tn_treecount; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3006 |
+} __attribute__ ((packed)); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3007 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3008 |
+#ifdef __SUNPRO_C |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3009 |
+#pragma pack() |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3010 |
+#endif |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3011 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3012 |
+/* LSP: ROUTER_CAPABILITY RCSTLV_TRILL_VLANSROOTS */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3013 |
+struct trill_vlan_bridge_roots_subtlv |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3014 |
+{ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3015 |
+ u_int16_t vlan_start; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3016 |
+ u_int16_t vlan_end; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3017 |
+}; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3018 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3019 |
+/* flags for vlan_start */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3020 |
+#define TVRFS_M4 0x8000 |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3021 |
+#define TVRFS_M6 0x4000 |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3022 |
+#define TVRFS_OM 0x2000 |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3023 |
+#define TVRFS_R 0x1000 |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3024 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3025 |
+/* Hello: PORT_CAPABILITY PCSTLV_VLANS */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3026 |
+struct trill_vlanflags_subtlv |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3027 |
+{ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3028 |
+ u_int16_t outer_vlan; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3029 |
+ u_int16_t desig_vlan; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3030 |
+}; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3031 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3032 |
+/* flags for outer_vlan */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3033 |
+#define TVFFO_AF 0x8000 |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3034 |
+#define TVFFO_AC 0x4000 |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3035 |
+#define TVFFO_VM 0x2000 |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3036 |
+#define TVFFO_R 0x1000 |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3037 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3038 |
+/* Hello: PORT_CAPABILITY PCSTLV_APPFORWARDERS */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3039 |
+struct appointed_vlanfwder_subtlv |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3040 |
+{ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3041 |
+ u_int16_t appointee_nick; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3042 |
+ u_int16_t vlan_start; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3043 |
+ u_int16_t vlan_end; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3044 |
+}; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3045 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3046 |
+/* Hello: PORT_CAPABILITY PCSTLV_ENABLEDVLANS */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3047 |
+struct trill_enabledvlans_subtlv |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3048 |
+{ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3049 |
+ u_int16_t start_vlan; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3050 |
+}; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3051 |
|
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3052 |
/* |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3053 |
* Pointer to each tlv type, filled by parse_tlvs() |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3054 |
@@ -249,6 +398,8 @@ struct tlvs |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3055 |
struct list *ipv6_reachs; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3056 |
#endif |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3057 |
struct isis_passwd auth_info; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3058 |
+ struct list *router_capabilities; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3059 |
+ struct list *port_capabilities; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3060 |
}; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3061 |
|
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3062 |
/* |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3063 |
@@ -277,6 +428,8 @@ struct tlvs |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3064 |
#define TLVFLAG_TE_ROUTER_ID (1<<19) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3065 |
#define TLVFLAG_CHECKSUM (1<<20) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3066 |
#define TLVFLAG_GRACEFUL_RESTART (1<<21) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3067 |
+#define TLVFLAG_ROUTER_CAPABILITY (1<<22) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3068 |
+#define TLVFLAG_PORT_CAPABILITY (1<<23) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3069 |
|
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3070 |
void init_tlvs (struct tlvs *tlvs, uint32_t expected); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3071 |
void free_tlvs (struct tlvs *tlvs); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3072 |
@@ -284,6 +437,11 @@ int parse_tlvs (char *areatag, u_char * stream, int size, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3073 |
u_int32_t * expected, u_int32_t * found, struct tlvs *tlvs); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3074 |
void free_tlv (void *val); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3075 |
|
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3076 |
+int add_tlv (u_char, u_char, u_char *, struct stream *); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3077 |
+int add_subtlv (u_char, u_char, u_char *, size_t, struct stream *); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3078 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3079 |
+int tlv_add_trill_nickname (struct trill_nickname *nick_info, struct stream *stream, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3080 |
+ struct isis_area *area); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3081 |
int tlv_add_area_addrs (struct list *area_addrs, struct stream *stream); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3082 |
int tlv_add_is_neighs (struct list *is_neighs, struct stream *stream); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3083 |
int tlv_add_te_is_neighs (struct list *te_is_neighs, struct stream *stream); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3084 |
@@ -304,6 +462,7 @@ int tlv_add_ipv6_addrs (struct list *ipv6_addrs, struct stream *stream); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3085 |
int tlv_add_ipv6_reachs (struct list *ipv6_reachs, struct stream *stream); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3086 |
#endif /* HAVE_IPV6 */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3087 |
|
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3088 |
+int tlv_add_trill_vlans(struct isis_circuit *); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3089 |
int tlv_add_padding (struct stream *stream); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3090 |
|
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3091 |
#endif /* _ZEBRA_ISIS_TLV_H */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3092 |
diff --git isisd/isis_trill.c isisd/isis_trill.c |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3093 |
new file mode 100644 |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3094 |
index 0000000..3a38660 |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3095 |
--- /dev/null |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3096 |
+++ isisd/isis_trill.c |
855
e14713202945
7173355 quagga packages need to be updated to reflect libdladm changes
Renee Danson Sommerfeld <Renee.Sommerfeld@Oracle.COM>
parents:
641
diff
changeset
|
3097 |
@@ -0,0 +1,2348 @@ |
417
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3098 |
+/* |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3099 |
+ * IS-IS Rout(e)ing protocol - isis_trill.c |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3100 |
+ * |
855
e14713202945
7173355 quagga packages need to be updated to reflect libdladm changes
Renee Danson Sommerfeld <Renee.Sommerfeld@Oracle.COM>
parents:
641
diff
changeset
|
3101 |
+ * Copyright (c) 2009, 2012, Oracle and/or its affiliates. All rights reserved. |
417
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3102 |
+ * |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3103 |
+ * This program is free software; you can redistribute it and/or modify it |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3104 |
+ * under the terms of the GNU General Public Licenseas published by the Free |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3105 |
+ * Software Foundation; either version 2 of the License, or (at your option) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3106 |
+ * any later version. |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3107 |
+ * |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3108 |
+ * This program is distributed in the hope that it will be useful,but WITHOUT |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3109 |
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3110 |
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3111 |
+ * more details. |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3112 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3113 |
+ * You should have received a copy of the GNU General Public License along |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3114 |
+ * with this program; if not, write to the Free Software Foundation, Inc., |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3115 |
+ * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3116 |
+ */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3117 |
+#include <zebra.h> |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3118 |
+#include <libdladm.h> |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3119 |
+#include <libdllink.h> |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3120 |
+#include <libdlbridge.h> |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3121 |
+#include <libdlvlan.h> |
855
e14713202945
7173355 quagga packages need to be updated to reflect libdladm changes
Renee Danson Sommerfeld <Renee.Sommerfeld@Oracle.COM>
parents:
641
diff
changeset
|
3122 |
+#include <libnetcfg.h> |
417
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3123 |
+#include <net/trill.h> |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3124 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3125 |
+#include "thread.h" |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3126 |
+#include "linklist.h" |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3127 |
+#include "stream.h" |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3128 |
+#include "vty.h" |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3129 |
+#include "log.h" |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3130 |
+#include "command.h" |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3131 |
+#include "memory.h" |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3132 |
+#include "prefix.h" |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3133 |
+#include "hash.h" |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3134 |
+#include "if.h" |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3135 |
+#include "table.h" |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3136 |
+#include "privs.h" |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3137 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3138 |
+#include "isisd/dict.h" |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3139 |
+#include "isisd/isis_common.h" |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3140 |
+#include "isisd/isis_constants.h" |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3141 |
+#include "isisd/isis_circuit.h" |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3142 |
+#include "isisd/isis_flags.h" |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3143 |
+#include "isisd/isis_tlv.h" |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3144 |
+#include "isisd/isis_lsp.h" |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3145 |
+#include "isisd/isis_vlans.h" |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3146 |
+#include "isisd/isis_trill.h" |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3147 |
+#include "isisd/isisd.h" |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3148 |
+#include "isisd/isis_misc.h" |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3149 |
+#include "isisd/isis_pdu.h" |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3150 |
+#include "isisd/isis_events.h" |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3151 |
+#include "isisd/bool.h" |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3152 |
+#include "isisd/isis_spf.h" |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3153 |
+#include "isisd/isis_adjacency.h" |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3154 |
+#include "isisd/isis_csm.h" |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3155 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3156 |
+extern struct zebra_privs_t isisd_privs; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3157 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3158 |
+/* Number of available (randomly-assigned) nicknames, not counting reserved */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3159 |
+static int nickavailcnt; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3160 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3161 |
+/* Vector with bits set to indicate nicknames in use */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3162 |
+static u_char nickbitvector[NICKNAMES_BITARRAY_SIZE]; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3163 |
+#define NICK_IS_USED(n) (nickbitvector[(n)/8] & (1<<((n)%8))) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3164 |
+#define NICK_SET_USED(n) (nickbitvector[(n)/8] |= (1<<((n)%8))) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3165 |
+#define NICK_CLR_USED(n) (nickbitvector[(n)/8] &= ~(1<<((n)%8))) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3166 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3167 |
+/* Number of zero bits in each word of vector */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3168 |
+static u_char clear_bit_count[CLEAR_BITARRAY_SIZE]; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3169 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3170 |
+static dladm_handle_t dlhandle; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3171 |
+static char cfile_present = TRUE; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3172 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3173 |
+static nickdb_search_result trill_search_rbridge (struct isis_area *, nickinfo_t *, dnode_t **); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3174 |
+static void trill_dict_delete_nodes (dict_t *, dict_t *, void *, int); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3175 |
+static int trill_nick_conflict(nickinfo_t *, nickinfo_t *); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3176 |
+static int trill_parse_lsp (struct isis_lsp *, nickinfo_t *); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3177 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3178 |
+/* Test and mark a nickname in host byte order as allocated or free */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3179 |
+static int |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3180 |
+trill_nickname_nickbitmap_op(u_int16_t nick, int update, int val) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3181 |
+{ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3182 |
+ if (nick == RBRIDGE_NICKNAME_NONE || nick == RBRIDGE_NICKNAME_UNUSED) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3183 |
+ return FALSE; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3184 |
+ if (val) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3185 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3186 |
+ if (NICK_IS_USED(nick)) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3187 |
+ return TRUE; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3188 |
+ if (!update) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3189 |
+ return FALSE; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3190 |
+ NICK_SET_USED(nick); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3191 |
+ if (nick < RBRIDGE_NICKNAME_MINRES) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3192 |
+ nickavailcnt--; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3193 |
+ clear_bit_count[nick / CLEAR_BITARRAY_ENTRYLENBITS]--; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3194 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3195 |
+ else |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3196 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3197 |
+ if (!NICK_IS_USED(nick)) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3198 |
+ return TRUE; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3199 |
+ if (!update) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3200 |
+ return FALSE; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3201 |
+ NICK_CLR_USED(nick); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3202 |
+ if (nick < RBRIDGE_NICKNAME_MINRES) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3203 |
+ nickavailcnt++; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3204 |
+ clear_bit_count[nick / CLEAR_BITARRAY_ENTRYLENBITS]++; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3205 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3206 |
+ return FALSE; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3207 |
+} |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3208 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3209 |
+/* |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3210 |
+ * trill_nickname_gen calls this function to randomly allocate a new nickname |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3211 |
+ * in host byte order. We also keep track of allocated and in-use nicks. |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3212 |
+ */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3213 |
+static u_int16_t |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3214 |
+trill_nickname_alloc(void) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3215 |
+{ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3216 |
+ u_int i, j, k; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3217 |
+ u_int16_t nick; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3218 |
+ u_int nicknum; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3219 |
+ u_int freenickcnt = 0; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3220 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3221 |
+ if (nickavailcnt < 1) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3222 |
+ return RBRIDGE_NICKNAME_NONE; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3223 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3224 |
+ /* |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3225 |
+ * Note that rand() usually returns 15 bits, so we overlap two values to make |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3226 |
+ * sure we're getting at least 16 bits (as long as rand() returns 8 bits or |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3227 |
+ * more). Using random() instead would be better, but isis_main.c uses |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3228 |
+ * srand. |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3229 |
+ */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3230 |
+ nicknum = ((rand() << 8) | rand()) % nickavailcnt; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3231 |
+ for ( i = 0; i < sizeof (clear_bit_count); i++ ) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3232 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3233 |
+ freenickcnt += clear_bit_count[i]; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3234 |
+ if (freenickcnt <= nicknum) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3235 |
+ continue; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3236 |
+ nicknum -= freenickcnt - clear_bit_count[i]; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3237 |
+ nick = i * CLEAR_BITARRAY_ENTRYLEN * 8; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3238 |
+ for ( j = 0; j < CLEAR_BITARRAY_ENTRYLEN; j++) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3239 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3240 |
+ for (k = 0; k < 8; k++, nick++) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3241 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3242 |
+ if (!NICK_IS_USED(nick) && nicknum-- == 0) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3243 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3244 |
+ trill_nickname_nickbitmap_op (nick, TRUE, TRUE); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3245 |
+ return nick; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3246 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3247 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3248 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3249 |
+ break; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3250 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3251 |
+ assert (0); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3252 |
+ return 0; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3253 |
+} |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3254 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3255 |
+static void trill_nickname_reserve(u_int16_t nick_nbo) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3256 |
+{ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3257 |
+ trill_nickname_nickbitmap_op(ntohs(nick_nbo), TRUE, TRUE); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3258 |
+} |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3259 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3260 |
+static int is_nickname_used(u_int16_t nick_nbo) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3261 |
+{ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3262 |
+ return trill_nickname_nickbitmap_op(ntohs(nick_nbo), FALSE, TRUE); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3263 |
+} |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3264 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3265 |
+static void trill_nickname_free(u_int16_t nick_nbo) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3266 |
+{ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3267 |
+ trill_nickname_nickbitmap_op(ntohs(nick_nbo), TRUE, FALSE); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3268 |
+} |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3269 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3270 |
+static void |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3271 |
+trill_nickname_gen(struct isis_area *area) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3272 |
+{ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3273 |
+ u_int16_t nick; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3274 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3275 |
+ nick = trill_nickname_alloc(); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3276 |
+ if (nick == RBRIDGE_NICKNAME_NONE) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3277 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3278 |
+ zlog_err("RBridge nickname allocation failed. No nicknames available."); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3279 |
+ abort(); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3280 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3281 |
+ else |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3282 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3283 |
+ area->trill->nick.name = htons(nick); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3284 |
+ dladm_bridge_set_nick(area->trill->name, nick); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3285 |
+ if (isis->debugs & DEBUG_TRILL_EVENTS) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3286 |
+ zlog_debug("ISIS TRILL generated nick:%u", nick); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3287 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3288 |
+} |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3289 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3290 |
+static int |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3291 |
+nick_cmp(const void *key1, const void *key2) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3292 |
+{ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3293 |
+ return (memcmp(key1, key2, sizeof(u_int16_t))); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3294 |
+} |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3295 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3296 |
+static int |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3297 |
+sysid_cmp(const void *key1, const void *key2) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3298 |
+{ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3299 |
+ return (memcmp(key1, key2, ISIS_SYS_ID_LEN)); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3300 |
+} |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3301 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3302 |
+void |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3303 |
+trill_area_init(struct isis_area *area) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3304 |
+{ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3305 |
+ u_int i; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3306 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3307 |
+ area->trill->status = 0; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3308 |
+ area->trill->nick.priority = DFLT_NICK_PRIORITY; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3309 |
+ area->trill->root_priority = TRILL_DFLT_ROOT_PRIORITY; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3310 |
+ area->trill->nickdb = dict_create(MAX_RBRIDGE_NODES, nick_cmp); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3311 |
+ area->trill->sysidtonickdb = dict_create(MAX_RBRIDGE_NODES, sysid_cmp); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3312 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3313 |
+ nickavailcnt = RBRIDGE_NICKNAME_MINRES - RBRIDGE_NICKNAME_NONE - 1; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3314 |
+ memset(nickbitvector, 0, sizeof(nickbitvector)); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3315 |
+ for (i = 0; i < sizeof (clear_bit_count); i++) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3316 |
+ clear_bit_count[i] = CLEAR_BITARRAY_ENTRYLENBITS; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3317 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3318 |
+ /* These two are always reserved */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3319 |
+ NICK_SET_USED(RBRIDGE_NICKNAME_NONE); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3320 |
+ NICK_SET_USED(RBRIDGE_NICKNAME_UNUSED); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3321 |
+ clear_bit_count[RBRIDGE_NICKNAME_NONE / CLEAR_BITARRAY_ENTRYLENBITS]--; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3322 |
+ clear_bit_count[RBRIDGE_NICKNAME_UNUSED / CLEAR_BITARRAY_ENTRYLENBITS]--; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3323 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3324 |
+ isis_event_system_type_change (area, TRILL_ISIS_LEVEL); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3325 |
+ memset (area->trill->lspdb_acq_reqs, 0, sizeof(area->trill->lspdb_acq_reqs)); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3326 |
+} |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3327 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3328 |
+/* |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3329 |
+ * Called from isisd to handle trill nickname command. |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3330 |
+ * Nickname is user configured and in host byte order |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3331 |
+ */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3332 |
+int |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3333 |
+trill_area_nickname(struct isis_area *area, u_int16_t nickname) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3334 |
+{ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3335 |
+ int savednick; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3336 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3337 |
+ if (nickname == RBRIDGE_NICKNAME_NONE) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3338 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3339 |
+ /* Called from "no trill nickname" command */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3340 |
+ trill_nickname_gen (area); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3341 |
+ SET_FLAG (area->trill->status, TRILL_NICK_SET); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3342 |
+ SET_FLAG (area->trill->status, TRILL_AUTONICK); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3343 |
+ lsp_regenerate_schedule (area); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3344 |
+ return TRUE; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3345 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3346 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3347 |
+ nickname = htons(nickname); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3348 |
+ savednick = area->trill->nick.name; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3349 |
+ area->trill->nick.name = nickname; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3350 |
+ area->trill->nick.priority |= CONFIGURED_NICK_PRIORITY; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3351 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3352 |
+ /* |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3353 |
+ * Check if we know of another RBridge already using this nickname. |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3354 |
+ * If yes check if it conflicts with the nickname in the database. |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3355 |
+ */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3356 |
+ if (is_nickname_used(nickname)) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3357 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3358 |
+ nickinfo_t ni; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3359 |
+ dnode_t *dnode; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3360 |
+ nicknode_t *tnode; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3361 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3362 |
+ ni.nick = area->trill->nick; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3363 |
+ memcpy(ni.sysid, isis->sysid, ISIS_SYS_ID_LEN); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3364 |
+ if (trill_search_rbridge (area, &ni, &dnode) == FOUND) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3365 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3366 |
+ assert (dnode); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3367 |
+ tnode = dnode_get (dnode); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3368 |
+ if (trill_nick_conflict (&(tnode->info), &ni)) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3369 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3370 |
+ trill_dict_delete_nodes (area->trill->nickdb, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3371 |
+ area->trill->sysidtonickdb, &nickname, FALSE); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3372 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3373 |
+ else |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3374 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3375 |
+ /* |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3376 |
+ * The other nick in our nickdb has greater priority so return |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3377 |
+ * fail, restore nick and let user configure another nick. |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3378 |
+ */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3379 |
+ area->trill->nick.name = savednick; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3380 |
+ area->trill->nick.priority &= ~CONFIGURED_NICK_PRIORITY; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3381 |
+ return FALSE; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3382 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3383 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3384 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3385 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3386 |
+ trill_nickname_reserve(nickname); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3387 |
+ SET_FLAG(area->trill->status, TRILL_NICK_SET); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3388 |
+ UNSET_FLAG(area->trill->status, TRILL_AUTONICK); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3389 |
+ lsp_regenerate_schedule (area); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3390 |
+ return TRUE; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3391 |
+} |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3392 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3393 |
+static void |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3394 |
+trill_nickname_priority_update(struct isis_area *area, u_int8_t priority) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3395 |
+{ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3396 |
+ if (priority) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3397 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3398 |
+ area->trill->nick.priority = priority; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3399 |
+ SET_FLAG(area->trill->status, TRILL_PRIORITY_SET); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3400 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3401 |
+ else |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3402 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3403 |
+ /* Called from "no trill nickname priority" command */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3404 |
+ area->trill->nick.priority = DFLT_NICK_PRIORITY; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3405 |
+ UNSET_FLAG(area->trill->status, TRILL_PRIORITY_SET); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3406 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3407 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3408 |
+ /* |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3409 |
+ * Set the configured nickname priority bit if the |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3410 |
+ * nickname was not automatically generated. |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3411 |
+ */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3412 |
+ if (!CHECK_FLAG(area->trill->status, TRILL_AUTONICK)) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3413 |
+ area->trill->nick.priority |= CONFIGURED_NICK_PRIORITY; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3414 |
+ lsp_regenerate_schedule (area); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3415 |
+} |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3416 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3417 |
+static void |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3418 |
+trill_nickinfo_del(nickinfo_t *ni) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3419 |
+{ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3420 |
+ if (ni->dt_roots != NULL) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3421 |
+ list_delete (ni->dt_roots); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3422 |
+ if (ni->broots != NULL) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3423 |
+ list_delete (ni->broots); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3424 |
+} |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3425 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3426 |
+static void |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3427 |
+trill_dict_remnode ( dict_t *dict, dnode_t *dnode) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3428 |
+{ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3429 |
+ nicknode_t *tnode; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3430 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3431 |
+ assert (dnode); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3432 |
+ tnode = dnode_get (dnode); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3433 |
+ assert(tnode->refcnt); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3434 |
+ tnode->refcnt--; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3435 |
+ if (tnode->refcnt == 0) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3436 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3437 |
+ isis_spftree_del (tnode->rdtree); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3438 |
+ trill_nickinfo_del (&tnode->info); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3439 |
+ if (tnode->adjnodes) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3440 |
+ list_delete (tnode->adjnodes); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3441 |
+ if (tnode->vlans_reachable) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3442 |
+ list_delete (tnode->vlans_reachable); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3443 |
+ XFREE (MTYPE_ISIS_TRILL_NICKDB_NODE, tnode); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3444 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3445 |
+ dict_delete_free (dict, dnode); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3446 |
+} |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3447 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3448 |
+static void |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3449 |
+trill_dict_free (dict_t *dict) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3450 |
+{ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3451 |
+ dnode_t *dnode, *next; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3452 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3453 |
+ dnode = dict_first (dict); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3454 |
+ while (dnode) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3455 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3456 |
+ next = dict_next (dict, dnode); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3457 |
+ trill_dict_remnode (dict, dnode); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3458 |
+ dnode = next; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3459 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3460 |
+ dict_free_nodes (dict); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3461 |
+ dict_destroy (dict); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3462 |
+} |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3463 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3464 |
+void |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3465 |
+trill_area_free(struct isis_area *area) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3466 |
+{ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3467 |
+ area->trill->status = 0; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3468 |
+ trill_dict_free (area->trill->nickdb); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3469 |
+ trill_dict_free (area->trill->sysidtonickdb); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3470 |
+ if (area->trill->fwdtbl) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3471 |
+ list_delete (area->trill->fwdtbl); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3472 |
+ if (area->trill->adjnodes) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3473 |
+ list_delete (area->trill->adjnodes); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3474 |
+ if (area->trill->dt_roots) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3475 |
+ list_delete (area->trill->dt_roots); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3476 |
+ if (area->trill->vlans_reachable) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3477 |
+ list_delete (area->trill->vlans_reachable); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3478 |
+} |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3479 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3480 |
+/* |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3481 |
+ * Delete nickname node in both databases. First a lookup |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3482 |
+ * of the node in first db by key1 and using the found node |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3483 |
+ * a lookup of the node in second db is done. Asserts the |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3484 |
+ * node if exists in one also exist in the second db. |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3485 |
+ */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3486 |
+static void |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3487 |
+trill_dict_delete_nodes (dict_t *dict1, dict_t *dict2, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3488 |
+ void *key1, int key2isnick) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3489 |
+{ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3490 |
+ dnode_t *dnode1; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3491 |
+ dnode_t *dnode2; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3492 |
+ nicknode_t *tnode; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3493 |
+ int nickname; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3494 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3495 |
+ dnode1 = dict_lookup (dict1, key1); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3496 |
+ if (dnode1) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3497 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3498 |
+ tnode = (nicknode_t *) dnode_get(dnode1); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3499 |
+ if (tnode) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3500 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3501 |
+ if (key2isnick) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3502 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3503 |
+ dnode2 = dict_lookup (dict2, &(tnode->info.nick.name)); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3504 |
+ nickname = tnode->info.nick.name; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3505 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3506 |
+ else |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3507 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3508 |
+ dnode2 = dict_lookup (dict2, tnode->info.sysid); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3509 |
+ nickname = *(int *)key1; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3510 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3511 |
+ assert (dnode2); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3512 |
+ trill_dict_remnode (dict2, dnode2); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3513 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3514 |
+ /* Mark the nickname as available */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3515 |
+ trill_nickname_free(nickname); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3516 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3517 |
+ trill_dict_remnode (dict1, dnode1); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3518 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3519 |
+} |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3520 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3521 |
+static void |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3522 |
+trill_update_nickinfo (nicknode_t *tnode, nickinfo_t *recvd_nick) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3523 |
+{ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3524 |
+ trill_nickinfo_del(&tnode->info); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3525 |
+ tnode->info = *recvd_nick; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3526 |
+ /* clear copied nick */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3527 |
+ memset(recvd_nick, 0, sizeof (*recvd_nick)); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3528 |
+} |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3529 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3530 |
+static void |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3531 |
+trill_dict_create_nodes (struct isis_area *area, nickinfo_t *nick) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3532 |
+{ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3533 |
+ nicknode_t *tnode; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3534 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3535 |
+ tnode = XCALLOC (MTYPE_ISIS_TRILL_NICKDB_NODE, sizeof(nicknode_t)); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3536 |
+ tnode->info = *nick; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3537 |
+ dict_alloc_insert (area->trill->nickdb, &(tnode->info.nick.name), tnode); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3538 |
+ tnode->refcnt = 1; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3539 |
+ dict_alloc_insert (area->trill->sysidtonickdb, tnode->info.sysid, tnode); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3540 |
+ tnode->refcnt++; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3541 |
+ /* Mark the nickname as reserved */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3542 |
+ trill_nickname_reserve(nick->nick.name); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3543 |
+ tnode->rdtree = isis_spftree_new(); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3544 |
+ /* clear copied nick */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3545 |
+ memset(nick, 0, sizeof (*nick)); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3546 |
+} |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3547 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3548 |
+/* |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3549 |
+ * Update nickname information in the dictionary objects. |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3550 |
+ */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3551 |
+static void |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3552 |
+trill_nickdb_update ( struct isis_area *area, nickinfo_t *newnick) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3553 |
+{ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3554 |
+ dnode_t *dnode; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3555 |
+ nicknode_t *tnode; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3556 |
+ nickdb_search_result res; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3557 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3558 |
+ res = trill_search_rbridge (area, newnick, &dnode); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3559 |
+ if (res == NOTFOUND) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3560 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3561 |
+ trill_dict_create_nodes (area, newnick); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3562 |
+ return; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3563 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3564 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3565 |
+ assert (dnode); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3566 |
+ tnode = dnode_get (dnode); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3567 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3568 |
+ /* If nickname & system ID of the node in our database match |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3569 |
+ * the nick received then we don't have to change any dictionary |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3570 |
+ * nodes. Update only the node information. Otherwise we update |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3571 |
+ * the dictionary nodes. |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3572 |
+ */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3573 |
+ if (res == DUPLICATE || res == PRIORITY_CHANGE_ONLY) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3574 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3575 |
+ trill_update_nickinfo (tnode, newnick); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3576 |
+ return; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3577 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3578 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3579 |
+ /* |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3580 |
+ * If the RBridge has a new nick then update its nick only. |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3581 |
+ */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3582 |
+ if (res == NICK_CHANGED) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3583 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3584 |
+ if (isis->debugs & DEBUG_TRILL_EVENTS) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3585 |
+ zlog_debug("ISIS TRILL storing new nick:%d from sysID:%s", |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3586 |
+ ntohs(tnode->info.nick.name), sysid_print(tnode->info.sysid)); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3587 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3588 |
+ /* Delete the current nick in from our database */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3589 |
+ trill_dict_delete_nodes (area->trill->sysidtonickdb, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3590 |
+ area->trill->nickdb, tnode->info.sysid, TRUE); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3591 |
+ /* Store the new nick entry */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3592 |
+ trill_dict_create_nodes (area, newnick); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3593 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3594 |
+ else |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3595 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3596 |
+ /* |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3597 |
+ * There is another RBridge using the same nick. |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3598 |
+ * Determine which of the two RBridges should use the nick. |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3599 |
+ * But first we should delete any prev nick associated |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3600 |
+ * with system ID sending the newnick as it has just |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3601 |
+ * announced a new nick. |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3602 |
+ */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3603 |
+ trill_dict_delete_nodes (area->trill->sysidtonickdb, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3604 |
+ area->trill->nickdb, newnick->sysid, TRUE); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3605 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3606 |
+ if (trill_nick_conflict (&(tnode->info), newnick)) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3607 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3608 |
+ /* |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3609 |
+ * RBridge in tnode should choose another nick. |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3610 |
+ * Delete tnode from our nickdb and store newnick. |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3611 |
+ */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3612 |
+ if (isis->debugs & DEBUG_TRILL_EVENTS) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3613 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3614 |
+ zlog_debug("ISIS TRILL replacing conflict nick:%d of sysID:%s", |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3615 |
+ ntohs(tnode->info.nick.name), sysid_print(tnode->info.sysid)); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3616 |
+ zlog_debug("ISIS TRILL .....with nick:%d of sysID:%s", |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3617 |
+ ntohs(newnick->nick.name), sysid_print(newnick->sysid)); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3618 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3619 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3620 |
+ trill_dict_delete_nodes (area->trill->sysidtonickdb, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3621 |
+ area->trill->nickdb, tnode->info.sysid, TRUE); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3622 |
+ trill_dict_create_nodes (area, newnick); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3623 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3624 |
+ else if (isis->debugs & DEBUG_TRILL_EVENTS) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3625 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3626 |
+ zlog_debug("ISIS TRILL updated nick:%d of sysID:%s not accepted", |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3627 |
+ ntohs(newnick->nick.name), sysid_print(newnick->sysid)); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3628 |
+ zlog_debug("ISIS TRILL because of conflict with existing nick:%d of sysID:%s", |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3629 |
+ ntohs(tnode->info.nick.name), sysid_print(tnode->info.sysid)); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3630 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3631 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3632 |
+} |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3633 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3634 |
+/* |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3635 |
+ * Search the nickname database and the sysidtonick database |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3636 |
+ * to see if we know a rbridge that matches either the passed nickname |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3637 |
+ * or system ID or both. |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3638 |
+ */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3639 |
+static nickdb_search_result |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3640 |
+trill_search_rbridge ( struct isis_area *area, nickinfo_t *ni, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3641 |
+ dnode_t **fndnode) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3642 |
+{ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3643 |
+ dnode_t *dnode; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3644 |
+ nicknode_t *tnode; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3645 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3646 |
+ dnode = dict_lookup (area->trill->nickdb, &(ni->nick.name)); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3647 |
+ if (dnode == NULL) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3648 |
+ dnode = dict_lookup(area->trill->sysidtonickdb, ni->sysid); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3649 |
+ if (dnode == NULL) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3650 |
+ return NOTFOUND; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3651 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3652 |
+ tnode = (nicknode_t *) dnode_get (dnode); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3653 |
+ assert (tnode != NULL); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3654 |
+ assert (tnode->refcnt); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3655 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3656 |
+ if (fndnode) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3657 |
+ *fndnode = dnode; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3658 |
+ if ( memcmp(&(tnode->info.sysid), ni->sysid, ISIS_SYS_ID_LEN) != 0) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3659 |
+ return FOUND; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3660 |
+ if (tnode->info.nick.name != ni->nick.name) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3661 |
+ return NICK_CHANGED; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3662 |
+ if (tnode->info.nick.priority != ni->nick.priority) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3663 |
+ return PRIORITY_CHANGE_ONLY; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3664 |
+ /* Exact nick and sysid match */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3665 |
+ return DUPLICATE; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3666 |
+} |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3667 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3668 |
+/* |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3669 |
+ * trill_nick_conflict: nickname conflict resolution fn |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3670 |
+ * Returns FALSE when nick1 has greater priority and |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3671 |
+ * returns TRUE when nick1 has lower priority and |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3672 |
+ * must be changed. |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3673 |
+ */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3674 |
+static int |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3675 |
+trill_nick_conflict(nickinfo_t *nick1, nickinfo_t *nick2) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3676 |
+{ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3677 |
+ assert (nick1->nick.name == nick2->nick.name); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3678 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3679 |
+ /* If nick1 priority is greater (or) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3680 |
+ * If priorities match & nick1 sysid is greater |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3681 |
+ * then nick1 has higher priority |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3682 |
+ */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3683 |
+ if ((nick1->nick.priority > nick2->nick.priority) || |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3684 |
+ (nick1->nick.priority == nick2->nick.priority && |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3685 |
+ (sysid_cmp (nick1->sysid, nick2->sysid) > 0))) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3686 |
+ return FALSE; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3687 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3688 |
+ return TRUE; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3689 |
+} |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3690 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3691 |
+/* |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3692 |
+ * Remove nickname from the database. |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3693 |
+ * Called from lsp_destroy or when lsp is missing a nickname TLV. |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3694 |
+ */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3695 |
+void |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3696 |
+trill_nick_destroy(struct isis_lsp *lsp) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3697 |
+{ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3698 |
+ u_char *lsp_id; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3699 |
+ nickinfo_t ni; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3700 |
+ struct isis_area *area; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3701 |
+ int delnick; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3702 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3703 |
+ if (!isis->trill_active) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3704 |
+ return; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3705 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3706 |
+ area = listgetdata(listhead (isis->area_list)); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3707 |
+ lsp_id = lsp->lsp_header->lsp_id; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3708 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3709 |
+ /* |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3710 |
+ * If LSP is our own or is a Pseudonode LSP (and we do not |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3711 |
+ * learn nicks from Pseudonode LSPs) then no action is needed. |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3712 |
+ */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3713 |
+ if ((memcmp (lsp_id, isis->sysid, ISIS_SYS_ID_LEN) == 0) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3714 |
+ || (LSP_PSEUDO_ID(lsp_id) != 0)) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3715 |
+ return; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3716 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3717 |
+ if (!trill_parse_lsp (lsp, &ni) || |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3718 |
+ (ni.nick.name == RBRIDGE_NICKNAME_NONE)) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3719 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3720 |
+ /* Delete the nickname associated with the LSP system ID |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3721 |
+ * (if any) that did not include router capability TLV or |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3722 |
+ * TRILL flags or the nickname in the LSP is unknown. This |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3723 |
+ * happens when we recv a LSP from RBridge that just re-started |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3724 |
+ * and we have to delete the prev nick associated with it. |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3725 |
+ */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3726 |
+ trill_dict_delete_nodes (area->trill->sysidtonickdb, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3727 |
+ area->trill->nickdb, lsp_id, TRUE); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3728 |
+ if (isis->debugs & DEBUG_TRILL_EVENTS) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3729 |
+ zlog_debug("ISIS TRILL removed any nickname associated" |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3730 |
+ " with sysID:%s LSP seqnum:0x%08x pseudonode:%x", |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3731 |
+ sysid_print(lsp_id), ntohl (lsp->lsp_header->seq_num), |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3732 |
+ LSP_PSEUDO_ID(lsp_id) ); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3733 |
+ trill_nickinfo_del (&ni); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3734 |
+ return; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3735 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3736 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3737 |
+ memcpy(ni.sysid, lsp_id, ISIS_SYS_ID_LEN); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3738 |
+ delnick = ntohs(ni.nick.name); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3739 |
+ if (delnick != RBRIDGE_NICKNAME_NONE && |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3740 |
+ delnick != RBRIDGE_NICKNAME_UNUSED && |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3741 |
+ ni.nick.priority >= MIN_RBRIDGE_PRIORITY) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3742 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3743 |
+ /* Only delete if the nickname was learned |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3744 |
+ * from the LSP by ensuring both system ID |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3745 |
+ * and nickname in the LSP match with a node |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3746 |
+ * in our nick database. |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3747 |
+ */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3748 |
+ if (trill_search_rbridge (area, &ni, NULL) == DUPLICATE) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3749 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3750 |
+ trill_dict_delete_nodes (area->trill->sysidtonickdb, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3751 |
+ area->trill->nickdb, ni.sysid, TRUE); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3752 |
+ if (isis->debugs & DEBUG_TRILL_EVENTS) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3753 |
+ zlog_debug("ISIS TRILL removed nickname:%d associated" |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3754 |
+ " with sysID:%s LSP ID:0x%08x pseudonode:%x", |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3755 |
+ delnick, sysid_print(lsp_id), |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3756 |
+ ntohl (lsp->lsp_header->seq_num), |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3757 |
+ LSP_PSEUDO_ID(lsp_id) ); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3758 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3759 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3760 |
+ else if (isis->debugs & DEBUG_TRILL_EVENTS) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3761 |
+ zlog_debug("ISIS TRILL nick destroy invalid nickname:%d" |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3762 |
+ " from sysID:%s", delnick, sysid_print(lsp_id) ); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3763 |
+ trill_nickinfo_del (&ni); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3764 |
+} |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3765 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3766 |
+static void |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3767 |
+trill_nick_recv(struct isis_area *area, nickinfo_t *other_nick) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3768 |
+{ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3769 |
+ nickinfo_t ournick; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3770 |
+ int nickchange = FALSE; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3771 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3772 |
+ ournick.nick = area->trill->nick; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3773 |
+ memcpy (ournick.sysid, area->isis->sysid, ISIS_SYS_ID_LEN); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3774 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3775 |
+ if (isis->debugs & DEBUG_TRILL_EVENTS) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3776 |
+ zlog_debug("ISIS TRILL nick recv:%d from sysID:%s", |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3777 |
+ ntohs (other_nick->nick.name), sysid_print(other_nick->sysid) ); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3778 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3779 |
+ /* Check for reserved TRILL nicknames that are not valid for use */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3780 |
+ if ((other_nick->nick.name == RBRIDGE_NICKNAME_NONE) || |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3781 |
+ (other_nick->nick.name == RBRIDGE_NICKNAME_UNUSED)) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3782 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3783 |
+ zlog_warn("ISIS TRILL received reserved nickname:%d from sysID:%s", |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3784 |
+ ntohs (other_nick->nick.name), sysid_print(other_nick->sysid) ); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3785 |
+ return; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3786 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3787 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3788 |
+ if (!(other_nick->flags & TRILL_FLAGS_V0)) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3789 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3790 |
+ zlog_info ("ISIS TRILL nick %d doesn't support V0 headers; flags %02X", |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3791 |
+ ntohs (other_nick->nick.name), other_nick->flags); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3792 |
+ return; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3793 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3794 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3795 |
+ /* Check for conflict with our own nickname */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3796 |
+ if (other_nick->nick.name == area->trill->nick.name) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3797 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3798 |
+ /* Check if our nickname has lower priority or our |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3799 |
+ * system ID is lower, if not we keep our nickname. |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3800 |
+ */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3801 |
+ if (!(nickchange = trill_nick_conflict (&ournick, other_nick))) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3802 |
+ return; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3803 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3804 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3805 |
+ /* Update our nick database */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3806 |
+ trill_nickdb_update (area, other_nick); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3807 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3808 |
+ if (nickchange) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3809 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3810 |
+ /* We choose another nickname */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3811 |
+ trill_nickname_gen (area); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3812 |
+ SET_FLAG(area->trill->status, TRILL_AUTONICK); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3813 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3814 |
+ /* If previous nick was configured remove the bit |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3815 |
+ * indicating nickname was configured (0x80) */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3816 |
+ area->trill->nick.priority &= ~CONFIGURED_NICK_PRIORITY; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3817 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3818 |
+ /* Regenerate our LSP to advertise the new nickname */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3819 |
+ lsp_regenerate_schedule (area); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3820 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3821 |
+ if (isis->debugs & DEBUG_TRILL_EVENTS) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3822 |
+ zlog_debug("ISIS TRILL our nick changed to:%d", |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3823 |
+ ntohs (area->trill->nick.name)); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3824 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3825 |
+} |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3826 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3827 |
+void |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3828 |
+trill_lspdb_acquire_event(struct isis_circuit *circuit, lspdbacq_state caller) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3829 |
+{ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3830 |
+ struct isis_area *area; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3831 |
+ u_int8_t cid; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3832 |
+ struct listnode *cnode; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3833 |
+ int done = TRUE; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3834 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3835 |
+ area = circuit->area; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3836 |
+ cid = circuit->circuit_id; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3837 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3838 |
+ if (!isis->trill_active) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3839 |
+ return; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3840 |
+ if (CHECK_FLAG (area->trill->status, (TRILL_LSPDB_ACQUIRED | TRILL_NICK_SET))) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3841 |
+ return; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3842 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3843 |
+ switch(caller) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3844 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3845 |
+ case CSNPRCV: |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3846 |
+ case CSNPSND: |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3847 |
+ LSPDB_ACQTRYINC (area, cid); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3848 |
+ break; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3849 |
+ case PSNPSNDTRY: |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3850 |
+ if (circuit->circ_type != CIRCUIT_T_BROADCAST) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3851 |
+ LSPDB_ACQTRYINC (area, cid); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3852 |
+ break; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3853 |
+ default: |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3854 |
+ break; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3855 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3856 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3857 |
+ for (ALL_LIST_ELEMENTS_RO (area->circuit_list, cnode, circuit)) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3858 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3859 |
+ cid = circuit->circuit_id; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3860 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3861 |
+ /* |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3862 |
+ * If on any circuit we have reached max tries |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3863 |
+ * we consider LSP DB acquisition as done and |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3864 |
+ * assign ourselves a nickname |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3865 |
+ */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3866 |
+ if (LSPDB_ACQTRYVAL (area, cid) > MAX_LSPDB_ACQTRIES) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3867 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3868 |
+ done = TRUE; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3869 |
+ break; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3870 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3871 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3872 |
+ /* |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3873 |
+ * If on any circuits we haven't received min LSPDB update |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3874 |
+ * packets then we wait until we hit max tries above |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3875 |
+ * on any circuit. If not it can only mean there is no other |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3876 |
+ * IS-IS instance on any of our circuits and so we wait. |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3877 |
+ */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3878 |
+ if (LSPDB_ACQTRYVAL (area, cid) < MIN_LSPDB_ACQTRIES) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3879 |
+ done = FALSE; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3880 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3881 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3882 |
+ if (isis->debugs & DEBUG_TRILL_EVENTS) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3883 |
+ zlog_debug("ISIS TRILL LSPDB acquire event:%d cid:%d, done:%d", |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3884 |
+ caller, cid, done); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3885 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3886 |
+ if (done) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3887 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3888 |
+ /* |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3889 |
+ * LSP DB acquired state, sufficient to start |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3890 |
+ * advertising our nickname. Set flags, pick a |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3891 |
+ * new nick if necessary and trigger new LSPs with the nick. |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3892 |
+ */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3893 |
+ SET_FLAG (area->trill->status, TRILL_LSPDB_ACQUIRED); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3894 |
+ if (ntohs(area->trill->nick.name) == RBRIDGE_NICKNAME_NONE) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3895 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3896 |
+ trill_nickname_gen (area); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3897 |
+ SET_FLAG (area->trill->status, TRILL_NICK_SET); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3898 |
+ SET_FLAG (area->trill->status, TRILL_AUTONICK); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3899 |
+ lsp_regenerate_schedule (area); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3900 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3901 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3902 |
+} |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3903 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3904 |
+static void |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3905 |
+trill_del_broot_node(void *data) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3906 |
+{ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3907 |
+ struct trill_vlan_bridge_roots *broot = data; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3908 |
+ if (broot->bridge_roots != NULL) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3909 |
+ XFREE (MTYPE_ISIS_TRILL_BRIDGE_ROOTIDS, broot->bridge_roots); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3910 |
+ XFREE (MTYPE_ISIS_TRILL_VLANBRIDGE_ROOTS, broot); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3911 |
+} |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3912 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3913 |
+/* |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3914 |
+ * Returns TRUE if a nickname was received in the parsed LSP |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3915 |
+ */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3916 |
+static int |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3917 |
+trill_parse_lsp (struct isis_lsp *lsp, nickinfo_t *recvd_nick) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3918 |
+{ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3919 |
+ struct listnode *node; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3920 |
+ struct router_capability *rtr_cap; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3921 |
+ struct trill_vlan_bridge_roots *broot; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3922 |
+ struct trill_vlan_bridge_roots_subtlv *brootstlv; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3923 |
+ u_int8_t subtlvs_len; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3924 |
+ u_int8_t subtlv; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3925 |
+ u_int8_t subtlv_len; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3926 |
+ u_int8_t stlvlen; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3927 |
+ u_int16_t dtroot_nick; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3928 |
+ int nick_recvd = FALSE; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3929 |
+ int flags_recvd = FALSE; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3930 |
+ int broots_recvd = FALSE; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3931 |
+ u_char *pnt; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3932 |
+ int idx; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3933 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3934 |
+ memset(recvd_nick, 0, sizeof(nickinfo_t)); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3935 |
+ if (lsp->tlv_data.router_capabilities == NULL) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3936 |
+ return FALSE; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3937 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3938 |
+ memcpy (recvd_nick->sysid, lsp->lsp_header->lsp_id, ISIS_SYS_ID_LEN); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3939 |
+ recvd_nick->root_priority = TRILL_DFLT_ROOT_PRIORITY; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3940 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3941 |
+ for (ALL_LIST_ELEMENTS_RO (lsp->tlv_data.router_capabilities, node, rtr_cap)) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3942 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3943 |
+ if (rtr_cap->len < ROUTER_CAPABILITY_MIN_LEN) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3944 |
+ continue; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3945 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3946 |
+ subtlvs_len = rtr_cap->len - ROUTER_CAPABILITY_MIN_LEN; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3947 |
+ pnt = ((u_char *)rtr_cap) + sizeof(struct router_capability); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3948 |
+ while (subtlvs_len >= TLFLDS_LEN) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3949 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3950 |
+ subtlv = *(u_int8_t *)pnt++; subtlvs_len--; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3951 |
+ subtlv_len = *(u_int8_t *)pnt++; subtlvs_len--; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3952 |
+ if (subtlv_len > subtlvs_len) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3953 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3954 |
+ zlog_warn("ISIS trill_parse_lsp received invalid router" |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3955 |
+ " capability subtlvs_len:%d subtlv_len:%d", |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3956 |
+ subtlvs_len, subtlv_len); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3957 |
+ break; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3958 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3959 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3960 |
+ switch (subtlv) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3961 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3962 |
+ case RCSTLV_TRILL_FLAGS: |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3963 |
+ /* var. len with min. one octet and must be included in each link state PDU */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3964 |
+ if (!flags_recvd && subtlv_len >= TRILL_FLAGS_SUBTLV_MIN_LEN) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3965 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3966 |
+ recvd_nick->flags = *(u_int8_t *)pnt; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3967 |
+ flags_recvd = TRUE; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3968 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3969 |
+ else |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3970 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3971 |
+ if (flags_recvd) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3972 |
+ zlog_warn("ISIS trill_parse_lsp multiple TRILL" |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3973 |
+ " flags sub-TLVs received"); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3974 |
+ else |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3975 |
+ zlog_warn("ISIS trill_parse_lsp invalid len:%d" |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3976 |
+ " of TRILL flags sub-TLV", subtlv_len); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3977 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3978 |
+ pnt += subtlv_len; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3979 |
+ subtlvs_len -= subtlv_len; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3980 |
+ break; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3981 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3982 |
+ case RCSTLV_TRILL_NICKNAME: |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3983 |
+ stlvlen = subtlv_len; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3984 |
+ if (!nick_recvd && subtlv_len >= TRILL_NICKNAME_SUBTLV_MIN_LEN) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3985 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3986 |
+ struct trill_nickname_subtlv *tn; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3987 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3988 |
+ tn = (struct trill_nickname_subtlv *)pnt; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3989 |
+ recvd_nick->nick.priority = tn->tn_priority; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3990 |
+ recvd_nick->nick.name = tn->tn_nickname; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3991 |
+ recvd_nick->root_priority = ntohs(tn->tn_trootpri); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3992 |
+ recvd_nick->root_count = ntohs(tn->tn_treecount); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3993 |
+ nick_recvd = TRUE; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3994 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3995 |
+ else |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3996 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3997 |
+ if (nick_recvd) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3998 |
+ zlog_warn("ISIS trill_parse_lsp multiple TRILL" |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
3999 |
+ " nick sub-TLVs received"); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4000 |
+ else |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4001 |
+ zlog_warn("ISIS trill_parse_lsp invalid len:%d" |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4002 |
+ " of TRILL nick sub-TLV", subtlv_len); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4003 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4004 |
+ pnt += stlvlen; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4005 |
+ subtlvs_len -= subtlv_len; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4006 |
+ break; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4007 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4008 |
+ case RCSTLV_TRILL_TREE_ROOTS: |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4009 |
+ if (subtlv_len % TRILL_NICKNAME_LEN) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4010 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4011 |
+ pnt += subtlv_len; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4012 |
+ subtlvs_len -= subtlv_len; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4013 |
+ zlog_warn("ISIS trill_parse_lsp received invalid" |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4014 |
+ " distribution tree roots subtlv_len:%d", subtlv_len); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4015 |
+ break; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4016 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4017 |
+ if (recvd_nick->dt_roots == NULL) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4018 |
+ recvd_nick->dt_roots = list_new(); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4019 |
+ stlvlen = subtlv_len; /* zero len possible */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4020 |
+ while (stlvlen > 0) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4021 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4022 |
+ dtroot_nick = *(u_int16_t *)pnt; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4023 |
+ pnt += TRILL_NICKNAME_LEN; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4024 |
+ subtlvs_len -= TRILL_NICKNAME_LEN; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4025 |
+ stlvlen -= TRILL_NICKNAME_LEN; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4026 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4027 |
+ if (dtroot_nick == RBRIDGE_NICKNAME_NONE || |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4028 |
+ dtroot_nick == RBRIDGE_NICKNAME_UNUSED) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4029 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4030 |
+ zlog_warn("ISIS trill_parse_lsp received invalid" |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4031 |
+ " distribution tree root nick:%d.", dtroot_nick); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4032 |
+ continue; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4033 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4034 |
+ listnode_add (recvd_nick->dt_roots, (void *)(u_long)*(u_int16_t *)pnt); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4035 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4036 |
+ break; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4037 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4038 |
+ case RCSTLV_TRILL_VLANSROOTS: |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4039 |
+ if (subtlv_len < TRILL_VLANSNBRIROOTS_SUBTLV_MIN_LEN) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4040 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4041 |
+ pnt += subtlv_len; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4042 |
+ subtlvs_len -= subtlv_len; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4043 |
+ zlog_warn("ISIS trill_parse_lsp received invalid" |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4044 |
+ " vlans and bridge roots subtlv_len:%d", subtlv_len); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4045 |
+ break; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4046 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4047 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4048 |
+ if (recvd_nick->broots == NULL) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4049 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4050 |
+ recvd_nick->broots = list_new(); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4051 |
+ recvd_nick->broots->del = trill_del_broot_node; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4052 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4053 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4054 |
+ broot = XCALLOC (MTYPE_ISIS_TRILL_VLANBRIDGE_ROOTS, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4055 |
+ sizeof(struct trill_vlan_bridge_roots)); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4056 |
+ brootstlv = (struct trill_vlan_bridge_roots_subtlv *)pnt; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4057 |
+ broot->vlan_start = VLANTCI(ntohs(brootstlv->vlan_start)); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4058 |
+ broot->vlan_end = VLANTCI(ntohs(brootstlv->vlan_end)); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4059 |
+ pnt += TRILL_VLANSNBRIROOTS_SUBTLV_MIN_LEN; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4060 |
+ subtlvs_len -= TRILL_VLANSNBRIROOTS_SUBTLV_MIN_LEN; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4061 |
+ subtlv_len -= TRILL_VLANSNBRIROOTS_SUBTLV_MIN_LEN; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4062 |
+ if (subtlv_len % ETHERADDRL) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4063 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4064 |
+ pnt += subtlv_len; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4065 |
+ subtlvs_len -= subtlv_len; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4066 |
+ zlog_warn("ISIS trill_parse_lsp received invalid" |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4067 |
+ " vlans and bridge roots subtlv_len:%d", subtlv_len); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4068 |
+ XFREE (MTYPE_ISIS_TRILL_VLANBRIDGE_ROOTS, broot); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4069 |
+ break; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4070 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4071 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4072 |
+ if (subtlv_len > 0) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4073 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4074 |
+ broot->bridge_roots_count = subtlv_len / ETHERADDRL; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4075 |
+ broot->bridge_roots = XMALLOC (MTYPE_ISIS_TRILL_BRIDGE_ROOTIDS, subtlv_len); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4076 |
+ memcpy(broot->bridge_roots, pnt, subtlv_len); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4077 |
+ pnt += subtlv_len; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4078 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4079 |
+ subtlvs_len -= subtlv_len; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4080 |
+ listnode_add (recvd_nick->broots, broot); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4081 |
+ broots_recvd = TRUE; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4082 |
+ break; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4083 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4084 |
+ default: |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4085 |
+ pnt += subtlv_len; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4086 |
+ subtlvs_len -= subtlv_len; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4087 |
+ break; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4088 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4089 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4090 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4091 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4092 |
+ if (recvd_nick->broots != NULL && broots_recvd == TRUE) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4093 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4094 |
+ for (ALL_LIST_ELEMENTS_RO(recvd_nick->broots, node, broot)) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4095 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4096 |
+ for (idx=broot->vlan_start; idx <=broot->vlan_end; idx++) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4097 |
+ SET_VLAN(recvd_nick->vlans_forwarder, idx); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4098 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4099 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4100 |
+ return (nick_recvd); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4101 |
+} |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4102 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4103 |
+void |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4104 |
+trill_parse_router_capability_tlvs (struct isis_area *area, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4105 |
+ struct isis_lsp *lsp) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4106 |
+{ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4107 |
+ nickinfo_t recvd_nick; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4108 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4109 |
+ /* Return if LSP is our own or is a pseudonode LSP */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4110 |
+ if ((memcmp (lsp->lsp_header->lsp_id, isis->sysid, ISIS_SYS_ID_LEN) == 0) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4111 |
+ || (LSP_PSEUDO_ID(lsp->lsp_header->lsp_id) != 0)) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4112 |
+ return; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4113 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4114 |
+ if (trill_parse_lsp (lsp, &recvd_nick)) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4115 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4116 |
+ /* Parsed LSP correctly but process only if nick is not unknown */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4117 |
+ if (recvd_nick.nick.name != RBRIDGE_NICKNAME_NONE) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4118 |
+ trill_nick_recv (area, &recvd_nick); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4119 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4120 |
+ else |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4121 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4122 |
+ /* if we have a nickname stored from this RBridge we remove it as this |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4123 |
+ * LSP without a nickname likely indicates the RBridge has re-started |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4124 |
+ * and hasn't chosen a new nick. |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4125 |
+ */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4126 |
+ trill_nick_destroy (lsp); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4127 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4128 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4129 |
+ trill_nickinfo_del (&recvd_nick); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4130 |
+} |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4131 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4132 |
+/* Lookup nickname when given a system ID */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4133 |
+u_int16_t |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4134 |
+sysid_to_nick(struct isis_area *area, u_char *sysid) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4135 |
+{ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4136 |
+ dnode_t *dnode; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4137 |
+ nicknode_t *tnode; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4138 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4139 |
+ dnode = dict_lookup (area->trill->sysidtonickdb, sysid); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4140 |
+ if (dnode == NULL) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4141 |
+ return 0; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4142 |
+ tnode = (nicknode_t *) dnode_get (dnode); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4143 |
+ return tnode->info.nick.name; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4144 |
+} |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4145 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4146 |
+nicknode_t * |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4147 |
+trill_nicknode_lookup(struct isis_area *area, uint16_t nick) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4148 |
+{ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4149 |
+ dnode_t *dnode; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4150 |
+ nicknode_t *tnode; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4151 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4152 |
+ dnode = dict_lookup (area->trill->nickdb, &nick); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4153 |
+ if (dnode == NULL) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4154 |
+ return (NULL); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4155 |
+ tnode = (nicknode_t *) dnode_get (dnode); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4156 |
+ return (tnode); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4157 |
+} |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4158 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4159 |
+/* Lookup system ID when given a nickname */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4160 |
+u_char * |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4161 |
+nick_to_sysid(struct isis_area *area, u_int16_t nick) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4162 |
+{ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4163 |
+ nicknode_t *tnode; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4164 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4165 |
+ tnode = trill_nicknode_lookup(area, nick); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4166 |
+ if (tnode == NULL) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4167 |
+ return (NULL); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4168 |
+ return tnode->info.sysid; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4169 |
+} |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4170 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4171 |
+static void |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4172 |
+trill_destroy_nickfwdtable(void *obj) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4173 |
+{ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4174 |
+ XFREE (MTYPE_ISIS_TRILL_FWDTBL_NODE, obj); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4175 |
+} |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4176 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4177 |
+/* |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4178 |
+ * Creates a nickname forwarding table for TRILL. |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4179 |
+ * Forwarding table is stored in the per-area fwdtbl list. |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4180 |
+ */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4181 |
+static void |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4182 |
+trill_create_nickfwdtable(struct isis_area *area) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4183 |
+{ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4184 |
+ struct listnode *node; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4185 |
+ struct isis_vertex *vertex; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4186 |
+ struct isis_adjacency *adj; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4187 |
+ struct list *fwdlist = NULL; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4188 |
+ nickfwdtblnode_t *fwdnode; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4189 |
+ struct isis_spftree *rdtree; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4190 |
+ int firstnode = TRUE; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4191 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4192 |
+ rdtree = area->spftree [TRILL_ISIS_LEVEL-1]; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4193 |
+ if (area->trill->fwdtbl) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4194 |
+ list_delete (area->trill->fwdtbl); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4195 |
+ area->trill->fwdtbl = NULL; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4196 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4197 |
+ for (ALL_LIST_ELEMENTS_RO (rdtree->paths, node, vertex)) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4198 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4199 |
+ if (firstnode) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4200 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4201 |
+ /* first node in path list is us */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4202 |
+ fwdlist = list_new(); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4203 |
+ fwdlist->del = trill_destroy_nickfwdtable; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4204 |
+ firstnode = FALSE; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4205 |
+ continue; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4206 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4207 |
+ if (vertex->type != VTYPE_NONPSEUDO_IS && |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4208 |
+ vertex->type != VTYPE_NONPSEUDO_TE_IS) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4209 |
+ continue; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4210 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4211 |
+ if (listhead (vertex->Adj_N) && |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4212 |
+ (adj = listgetdata (listhead (vertex->Adj_N)))) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4213 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4214 |
+ fwdnode = XCALLOC (MTYPE_ISIS_TRILL_FWDTBL_NODE, sizeof(nickfwdtblnode_t)); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4215 |
+ fwdnode->dest_nick = sysid_to_nick (area, vertex->N.id); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4216 |
+ memcpy(fwdnode->adj_snpa, adj->snpa, sizeof(fwdnode->adj_snpa)); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4217 |
+ fwdnode->interface = adj->circuit->interface; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4218 |
+ listnode_add (fwdlist, fwdnode); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4219 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4220 |
+ else |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4221 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4222 |
+ list_delete (fwdlist); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4223 |
+ fwdlist = NULL; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4224 |
+ return; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4225 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4226 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4227 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4228 |
+ area->trill->fwdtbl = fwdlist; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4229 |
+} |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4230 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4231 |
+static void |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4232 |
+trill_fwdtbl_print (struct vty *vty, struct isis_area *area) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4233 |
+{ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4234 |
+ struct listnode *node; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4235 |
+ nickfwdtblnode_t *fwdnode; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4236 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4237 |
+ if (area->trill->fwdtbl == NULL) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4238 |
+ return; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4239 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4240 |
+ vty_out(vty, "RBridge nickname interface nexthop MAC%s", VTY_NEWLINE); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4241 |
+ for (ALL_LIST_ELEMENTS_RO (area->trill->fwdtbl, node, fwdnode)) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4242 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4243 |
+ vty_out (vty, "%-15s %-5d %-5s %-15s%s", |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4244 |
+ print_sys_hostname (nick_to_sysid (area, fwdnode->dest_nick)), |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4245 |
+ ntohs (fwdnode->dest_nick), fwdnode->interface->name, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4246 |
+ snpa_print (fwdnode->adj_snpa), VTY_NEWLINE); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4247 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4248 |
+} |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4249 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4250 |
+static void |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4251 |
+trill_add_nickadjlist(struct isis_area *area, struct list *adjlist, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4252 |
+ struct isis_vertex *vertex) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4253 |
+{ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4254 |
+ u_int16_t nick; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4255 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4256 |
+ nick = sysid_to_nick (area, vertex->N.id); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4257 |
+ if (!nick) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4258 |
+ return; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4259 |
+ if (listnode_lookup (adjlist, (void *)(u_long)nick) != NULL) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4260 |
+ return; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4261 |
+ listnode_add (adjlist, (void *)(u_long)nick); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4262 |
+} |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4263 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4264 |
+/* |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4265 |
+ * Creates TRILL nickname adjacency lists for each distribution tree (DT). |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4266 |
+ * An adjacency list consists of our (this RBridge) adjacent nodes in the |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4267 |
+ * campus that are present on the DT paths. It is a subset of our adjacent |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4268 |
+ * nodes. The adjacency list for a distribution tree is stored inside the |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4269 |
+ * root dict node of the distribution tree in our nickname database. |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4270 |
+ */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4271 |
+static void |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4272 |
+trill_create_nickadjlist(struct isis_area *area, nicknode_t *nicknode) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4273 |
+{ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4274 |
+ struct listnode *node; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4275 |
+ struct listnode *cnode; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4276 |
+ struct isis_vertex *vertex; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4277 |
+ struct isis_vertex *cvertex; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4278 |
+ struct isis_vertex *rbvertex = NULL; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4279 |
+ struct list *adjlist; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4280 |
+ struct list *childlist; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4281 |
+ struct isis_spftree *rdtree; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4282 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4283 |
+ if (nicknode == NULL) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4284 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4285 |
+ rdtree = area->spftree[TRILL_ISIS_LEVEL-1]; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4286 |
+ if (area->trill->adjnodes) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4287 |
+ list_delete (area->trill->adjnodes); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4288 |
+ area->trill->adjnodes = NULL; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4289 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4290 |
+ else |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4291 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4292 |
+ rdtree = nicknode->rdtree; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4293 |
+ if (nicknode->adjnodes) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4294 |
+ list_delete (nicknode->adjnodes); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4295 |
+ nicknode->adjnodes = NULL; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4296 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4297 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4298 |
+ /* Find our node in the distribution tree first */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4299 |
+ for (ALL_LIST_ELEMENTS_RO (rdtree->paths, node, vertex)) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4300 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4301 |
+ if (vertex->type != VTYPE_NONPSEUDO_IS && |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4302 |
+ vertex->type != VTYPE_NONPSEUDO_TE_IS) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4303 |
+ continue; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4304 |
+ if (memcmp (vertex->N.id, area->isis->sysid, ISIS_SYS_ID_LEN) == 0) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4305 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4306 |
+ rbvertex = vertex; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4307 |
+ break; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4308 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4309 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4310 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4311 |
+ /* Determine adjacencies by looking up the parent & child nodes */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4312 |
+ if (rbvertex) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4313 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4314 |
+ adjlist = list_new(); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4315 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4316 |
+ if (rbvertex->parent) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4317 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4318 |
+ /* |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4319 |
+ * Find adjacent parent node: check parent is not another vertex |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4320 |
+ * with our system ID and the parent node is on SPF paths |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4321 |
+ */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4322 |
+ vertex = rbvertex->parent; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4323 |
+ while (vertex != NULL) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4324 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4325 |
+ if (memcmp (vertex->N.id, area->isis->sysid, ISIS_SYS_ID_LEN) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4326 |
+ && (listnode_lookup (rdtree->paths, vertex))) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4327 |
+ break; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4328 |
+ vertex = vertex->parent; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4329 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4330 |
+ if (vertex != NULL) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4331 |
+ trill_add_nickadjlist (area, adjlist, vertex); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4332 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4333 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4334 |
+ if (rbvertex->children && listhead (rbvertex->children)) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4335 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4336 |
+ childlist = list_new(); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4337 |
+ for (ALL_LIST_ELEMENTS_RO (rbvertex->children, node, vertex)) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4338 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4339 |
+ if (memcmp (vertex->N.id, area->isis->sysid, ISIS_SYS_ID_LEN) == 0) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4340 |
+ listnode_add(childlist, vertex); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4341 |
+ else if (listnode_lookup (rdtree->paths, vertex)) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4342 |
+ trill_add_nickadjlist (area, adjlist, vertex); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4343 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4344 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4345 |
+ /* |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4346 |
+ * If we find child vertices above with our system ID then we search |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4347 |
+ * their descendants and any that are found are added as our adjacencies. |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4348 |
+ */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4349 |
+ for (node = listhead(childlist); node != NULL; node = listnextnode(node)) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4350 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4351 |
+ if ((vertex = listgetdata(node)) == NULL) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4352 |
+ break; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4353 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4354 |
+ for (ALL_LIST_ELEMENTS_RO (vertex->children, cnode, cvertex)) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4355 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4356 |
+ if ((memcmp (cvertex->N.id, area->isis->sysid, ISIS_SYS_ID_LEN) == 0) && |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4357 |
+ listnode_lookup(childlist, cvertex) == NULL) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4358 |
+ listnode_add(childlist, cvertex); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4359 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4360 |
+ if (listnode_lookup(rdtree->paths, cvertex)) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4361 |
+ trill_add_nickadjlist (area, adjlist, cvertex); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4362 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4363 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4364 |
+ list_delete(childlist); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4365 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4366 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4367 |
+ if (nicknode != NULL) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4368 |
+ nicknode->adjnodes = adjlist; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4369 |
+ else |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4370 |
+ area->trill->adjnodes = adjlist; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4371 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4372 |
+ trill_create_vlanfilterlist(area, nicknode); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4373 |
+} |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4374 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4375 |
+static nickfwdtblnode_t * |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4376 |
+trill_fwdtbl_lookup (struct isis_area *area, u_int16_t nick) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4377 |
+{ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4378 |
+ struct listnode *node; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4379 |
+ nickfwdtblnode_t *fwdnode; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4380 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4381 |
+ if (area->trill->fwdtbl == NULL) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4382 |
+ return NULL; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4383 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4384 |
+ for (ALL_LIST_ELEMENTS_RO (area->trill->fwdtbl, node, fwdnode)) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4385 |
+ if (fwdnode->dest_nick == nick) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4386 |
+ return fwdnode; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4387 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4388 |
+ return NULL; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4389 |
+} |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4390 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4391 |
+static void |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4392 |
+trill_adjtbl_print (struct vty *vty, struct isis_area *area, nicknode_t *nicknode) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4393 |
+{ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4394 |
+ struct listnode *node; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4395 |
+ nickfwdtblnode_t *fwdnode; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4396 |
+ void *listdata; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4397 |
+ u_int16_t nick; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4398 |
+ int idx = 0; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4399 |
+ u_int8_t *vlans; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4400 |
+ int vlan_set; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4401 |
+ int vlan; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4402 |
+ struct list *adjnodes; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4403 |
+ struct listnode *vnode = NULL; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4404 |
+ struct list *vlans_reachable; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4405 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4406 |
+ if (nicknode != NULL) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4407 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4408 |
+ adjnodes = nicknode->adjnodes; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4409 |
+ vlans_reachable = nicknode->vlans_reachable; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4410 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4411 |
+ else |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4412 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4413 |
+ adjnodes = area->trill->adjnodes; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4414 |
+ vlans_reachable = area->trill->vlans_reachable; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4415 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4416 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4417 |
+ if (adjnodes == NULL) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4418 |
+ return; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4419 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4420 |
+ if ((vlans_reachable != NULL) && |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4421 |
+ listcount(adjnodes) == listcount(vlans_reachable)) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4422 |
+ vnode = listhead (vlans_reachable); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4423 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4424 |
+ for (ALL_LIST_ELEMENTS_RO (adjnodes, node, listdata)) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4425 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4426 |
+ nick = (u_int16_t)(u_long)listdata; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4427 |
+ fwdnode = trill_fwdtbl_lookup (area, nick); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4428 |
+ if (!fwdnode) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4429 |
+ continue; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4430 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4431 |
+ vty_out (vty, "%-15s %-5d %-5s %-15s%s", |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4432 |
+ print_sys_hostname (nick_to_sysid(area, nick)), |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4433 |
+ ntohs (nick), fwdnode->interface->name, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4434 |
+ snpa_print (fwdnode->adj_snpa), VTY_NEWLINE); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4435 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4436 |
+ if (vlans_reachable == NULL || vnode == NULL) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4437 |
+ continue; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4438 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4439 |
+ vty_out (vty, " VLAN filter list:"); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4440 |
+ vlans = listgetdata (vnode); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4441 |
+ if (vlans == NULL) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4442 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4443 |
+ vty_out (vty, "%s", VTY_NEWLINE); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4444 |
+ continue; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4445 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4446 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4447 |
+ EACH_VLAN_SET(vlans, vlan, vlan_set) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4448 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4449 |
+ idx++; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4450 |
+ if (idx % 8 == 0) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4451 |
+ vty_out (vty, "%s ", VTY_NEWLINE); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4452 |
+ vty_out (vty, "%d ", vlan); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4453 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4454 |
+ vnode = listnextnode (vnode); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4455 |
+ vty_out (vty, "%s", VTY_NEWLINE); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4456 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4457 |
+ vty_out (vty, "%s", VTY_NEWLINE); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4458 |
+} |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4459 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4460 |
+static void |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4461 |
+trill_adjtbl_print_all (struct vty *vty, struct isis_area *area) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4462 |
+{ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4463 |
+ dnode_t *dnode; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4464 |
+ nicknode_t *tnode; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4465 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4466 |
+ vty_out(vty, "Adjacencies on our RBridge distribution tree:%s", VTY_NEWLINE); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4467 |
+ trill_adjtbl_print (vty, area, NULL); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4468 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4469 |
+ for (ALL_DICT_NODES_RO(area->trill->nickdb, dnode, tnode)) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4470 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4471 |
+ vty_out(vty, "Adjacencies on RBridge %s distribution tree:%s", |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4472 |
+ print_sys_hostname (tnode->info.sysid), VTY_NEWLINE); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4473 |
+ trill_adjtbl_print (vty, area, tnode); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4474 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4475 |
+} |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4476 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4477 |
+static void |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4478 |
+trill_ioctl(int fd, unsigned type, void *data) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4479 |
+{ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4480 |
+ if (isisd_privs.change (ZPRIVS_RAISE)) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4481 |
+ zlog_err ("%s: could not raise privs, %s", __func__, safe_strerror (errno)); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4482 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4483 |
+ if (ioctl(fd, type, data) != 0) { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4484 |
+ zlog_warn ("trill_ioctl() type:%X failed: %s", type, safe_strerror (errno)); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4485 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4486 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4487 |
+ if (isisd_privs.change (ZPRIVS_LOWER)) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4488 |
+ zlog_err ("%s: could not lower privs, %s", __func__, safe_strerror (errno)); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4489 |
+} |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4490 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4491 |
+static void |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4492 |
+trill_publish_nick(struct isis_area *area, int fd, u_int16_t nick, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4493 |
+ nickfwdtblnode_t *fwdnode) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4494 |
+{ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4495 |
+ nicknode_t *nick_node; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4496 |
+ int adjcount = 0; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4497 |
+ int dtrootcount = 0; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4498 |
+ int idx; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4499 |
+ int size; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4500 |
+ struct listnode *node; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4501 |
+ void *listdata; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4502 |
+ struct list *adjnodes; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4503 |
+ struct list *dtrootnodes; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4504 |
+ trill_nickinfo_t *ni; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4505 |
+ struct list *vlans_reachable; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4506 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4507 |
+ /* If this is a forwarding entry (not us), then get node data */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4508 |
+ if (fwdnode != NULL) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4509 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4510 |
+ nick_node = trill_nicknode_lookup (area, fwdnode->dest_nick); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4511 |
+ if (nick_node == NULL) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4512 |
+ return; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4513 |
+ adjnodes = nick_node->adjnodes; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4514 |
+ dtrootnodes = nick_node->info.dt_roots; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4515 |
+ vlans_reachable = nick_node->vlans_reachable; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4516 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4517 |
+ else |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4518 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4519 |
+ adjnodes = area->trill->adjnodes; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4520 |
+ dtrootnodes = area->trill->dt_roots; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4521 |
+ vlans_reachable = area->trill->vlans_reachable; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4522 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4523 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4524 |
+ if (adjnodes != NULL) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4525 |
+ adjcount = listcount(adjnodes); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4526 |
+ if (dtrootnodes != NULL) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4527 |
+ dtrootcount = listcount(dtrootnodes); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4528 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4529 |
+ size = sizeof(trill_nickinfo_t) + (adjcount * sizeof (u_int16_t)) + |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4530 |
+ (dtrootcount * sizeof (u_int16_t)) + |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4531 |
+ (adjcount * VLANS_ARRSIZE); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4532 |
+ ni = (trill_nickinfo_t *)calloc(1, size); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4533 |
+ ni->tni_adjcount = adjcount; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4534 |
+ ni->tni_dtrootcount = dtrootcount; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4535 |
+ ni->tni_nick = nick; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4536 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4537 |
+ if (fwdnode != NULL) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4538 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4539 |
+ memcpy(ni->tni_adjsnpa, fwdnode->adj_snpa, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4540 |
+ sizeof(fwdnode->adj_snpa)); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4541 |
+ ni->tni_linkid = fwdnode->interface->ifindex; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4542 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4543 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4544 |
+ if (adjcount > 0) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4545 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4546 |
+ idx = 0; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4547 |
+ for (ALL_LIST_ELEMENTS_RO (adjnodes, node, listdata)) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4548 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4549 |
+ TNI_ADJNICK(ni, idx) = (u_int16_t)(u_long)listdata; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4550 |
+ idx++; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4551 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4552 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4553 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4554 |
+ if (dtrootcount > 0) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4555 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4556 |
+ idx = 0; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4557 |
+ for (ALL_LIST_ELEMENTS_RO (dtrootnodes, node, listdata)) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4558 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4559 |
+ TNI_DTROOTNICK(ni, idx) = (u_int16_t)(u_long)listdata; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4560 |
+ idx++; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4561 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4562 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4563 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4564 |
+ if (vlans_reachable != NULL) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4565 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4566 |
+ idx = 0; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4567 |
+ for (ALL_LIST_ELEMENTS_RO (vlans_reachable, node, listdata)) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4568 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4569 |
+ memcpy (TNI_VLANFILTERMAP(ni, idx), listdata, VLANS_ARRSIZE); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4570 |
+ idx++; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4571 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4572 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4573 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4574 |
+ trill_ioctl (fd, fwdnode == NULL ? TRILL_SETNICK : TRILL_ADDNICK, ni); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4575 |
+ free(ni); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4576 |
+} |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4577 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4578 |
+static void |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4579 |
+trill_publish (struct isis_area *area, struct isis_circuit *trill_circuit) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4580 |
+{ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4581 |
+ dnode_t *dnode; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4582 |
+ nicknode_t *tnode; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4583 |
+ struct listnode *node; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4584 |
+ nickfwdtblnode_t *fwdnode; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4585 |
+ u_char *lsysid; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4586 |
+ u_int16_t lpriority; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4587 |
+ u_int16_t root_nick; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4588 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4589 |
+ trill_ioctl(trill_circuit->fd, TRILL_DELALL, NULL); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4590 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4591 |
+ if (area->trill->fwdtbl != NULL) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4592 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4593 |
+ for (ALL_LIST_ELEMENTS_RO (area->trill->fwdtbl, node, fwdnode)) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4594 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4595 |
+ trill_publish_nick(area, trill_circuit->fd, fwdnode->dest_nick, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4596 |
+ fwdnode); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4597 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4598 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4599 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4600 |
+ trill_publish_nick(area, trill_circuit->fd, area->trill->nick.name, NULL); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4601 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4602 |
+ /* Compute the highest priority root tree node */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4603 |
+ lpriority = area->trill->root_priority; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4604 |
+ lsysid = area->isis->sysid; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4605 |
+ root_nick = area->trill->nick.name; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4606 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4607 |
+ /* |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4608 |
+ * Highest priority tree root is determined by the numerically lowest |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4609 |
+ * priority field or if priorities are equal then by lowest system ID. |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4610 |
+ */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4611 |
+ for (ALL_DICT_NODES_RO(area->trill->nickdb, dnode, tnode)) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4612 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4613 |
+ if (tnode->info.root_priority > lpriority) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4614 |
+ continue; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4615 |
+ if (tnode->info.root_priority == lpriority && |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4616 |
+ memcmp(tnode->info.sysid, lsysid, ISIS_SYS_ID_LEN) > 0) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4617 |
+ continue; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4618 |
+ lpriority = tnode->info.root_priority; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4619 |
+ lsysid = tnode->info.sysid; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4620 |
+ root_nick = tnode->info.nick.name; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4621 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4622 |
+ trill_ioctl(trill_circuit->fd, TRILL_TREEROOT, &root_nick); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4623 |
+} |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4624 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4625 |
+void |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4626 |
+trill_set_vlan_forwarder (struct isis_circuit *circuit, u_int8_t *forwarder) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4627 |
+{ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4628 |
+ trill_ioctl(circuit->fd, TRILL_VLANFWDER, forwarder); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4629 |
+} |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4630 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4631 |
+void |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4632 |
+trill_port_flush (struct isis_circuit *circuit, u_int16_t vlan) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4633 |
+{ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4634 |
+ trill_ioctl(circuit->fd, TRILL_PORTFLUSH, (void *)(unsigned long)vlan); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4635 |
+} |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4636 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4637 |
+void |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4638 |
+trill_nick_flush (struct isis_circuit *circuit, u_int16_t vlan) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4639 |
+{ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4640 |
+ trill_ioctl(circuit->fd, TRILL_NICKFLUSH, (void *)(unsigned long)vlan); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4641 |
+} |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4642 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4643 |
+/* |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4644 |
+ * Called upon computing the SPF trees to create the forwarding |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4645 |
+ * and adjacency lists for TRILL. |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4646 |
+ */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4647 |
+void |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4648 |
+trill_process_spf (struct isis_area *area) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4649 |
+{ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4650 |
+ dnode_t *dnode; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4651 |
+ nicknode_t *tnode; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4652 |
+ struct listnode *node; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4653 |
+ struct isis_circuit *trill_circuit = NULL; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4654 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4655 |
+ /* Nothing to do if we don't have a nick yet */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4656 |
+ if (area->trill->nick.name == RBRIDGE_NICKNAME_NONE) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4657 |
+ return; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4658 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4659 |
+ if (area->circuit_list && listhead(area->circuit_list)) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4660 |
+ trill_circuit = listgetdata(listhead(area->circuit_list)); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4661 |
+ if (trill_circuit == NULL) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4662 |
+ return; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4663 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4664 |
+ trill_create_nickfwdtable(area); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4665 |
+ trill_create_nickadjlist(area, NULL); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4666 |
+ for (ALL_DICT_NODES_RO(area->trill->nickdb, dnode, tnode)) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4667 |
+ trill_create_nickadjlist(area, tnode); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4668 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4669 |
+ trill_publish(area, trill_circuit); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4670 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4671 |
+ for (ALL_LIST_ELEMENTS_RO(area->circuit_list, node, trill_circuit)) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4672 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4673 |
+ trill_ioctl(trill_circuit->fd, TRILL_DESIGVLAN, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4674 |
+ &trill_circuit->vlans->designated); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4675 |
+ if (trill_circuit->vlans->inhibit_all == 0) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4676 |
+ trill_set_vlan_forwarder (trill_circuit, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4677 |
+ trill_circuit->vlans->forwarder); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4678 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4679 |
+} |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4680 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4681 |
+void |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4682 |
+trill_nickdb_print (struct vty *vty, struct isis_area *area) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4683 |
+{ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4684 |
+ dnode_t *dnode; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4685 |
+ nicknode_t *tnode; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4686 |
+ const char *sysid; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4687 |
+ int vlan_count = 0; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4688 |
+ int vlan_set; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4689 |
+ int vlan; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4690 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4691 |
+ vty_out(vty, " System ID Hostname Nickname" |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4692 |
+ " Priority%s", VTY_NEWLINE); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4693 |
+ for (ALL_DICT_NODES_RO(area->trill->nickdb, dnode, tnode)) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4694 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4695 |
+ sysid = sysid_print (tnode->info.sysid); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4696 |
+ vty_out (vty, "%-21s %-10s %8d %8d%s", sysid, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4697 |
+ print_sys_hostname (tnode->info.sysid), |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4698 |
+ ntohs (tnode->info.nick.name), |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4699 |
+ tnode->info.nick.priority, VTY_NEWLINE); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4700 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4701 |
+ vty_out (vty, " VLAN Forwarder: "); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4702 |
+ EACH_VLAN_SET(tnode->info.vlans_forwarder, vlan, vlan_set) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4703 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4704 |
+ vlan_count++; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4705 |
+ if (vlan_count % 8 == 0) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4706 |
+ vty_out(vty, "%s ", VTY_NEWLINE); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4707 |
+ vty_out (vty, "%d ", vlan); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4708 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4709 |
+ vty_out (vty, "%s", VTY_NEWLINE); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4710 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4711 |
+} |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4712 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4713 |
+static int |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4714 |
+ethercmp(const void *e1, const void *e2) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4715 |
+{ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4716 |
+ return memcmp (e1, e2, ETH_ALEN); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4717 |
+} |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4718 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4719 |
+static int |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4720 |
+gather_bridge_ids(struct isis_area *area, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4721 |
+ struct trill_vlan_bridge_roots_subtlv *vlantlv, int vlan) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4722 |
+{ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4723 |
+ time_t now; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4724 |
+ int circnt; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4725 |
+ struct listnode *node; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4726 |
+ struct isis_circuit *circuit; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4727 |
+ char *bptr, *obptr; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4728 |
+ ptrdiff_t numbytes; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4729 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4730 |
+ now = time (NULL); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4731 |
+ circnt = 0; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4732 |
+ bptr = (char *)(vlantlv + 1); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4733 |
+ for (ALL_LIST_ELEMENTS_RO(area->circuit_list, node, circuit)) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4734 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4735 |
+ if (CHECK_VLAN(circuit->vlans->forwarder, vlan)) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4736 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4737 |
+ circnt++; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4738 |
+ /* |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4739 |
+ * Note that it's ok for circuits to lack a root bridge ID. There |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4740 |
+ * may just not be a bridge out there. (Ultimately, in the future, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4741 |
+ * that's where we'd like to be.) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4742 |
+ */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4743 |
+ if (circuit->root_expire != 0 && now - circuit->root_expire <= 0) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4744 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4745 |
+ /* ignore bridge priority; only the MAC ID is wanted */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4746 |
+ memcpy (bptr, circuit->root_bridge + 2, ETH_ALEN); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4747 |
+ bptr += ETH_ALEN; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4748 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4749 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4750 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4751 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4752 |
+ /* Sort the bridge IDs for ease of comparison, and then remove dups */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4753 |
+ obptr = (char *)(vlantlv + 1); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4754 |
+ numbytes = bptr - obptr; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4755 |
+ if (numbytes > ETH_ALEN) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4756 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4757 |
+ qsort(obptr, numbytes / ETH_ALEN, ETH_ALEN, ethercmp); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4758 |
+ while (obptr < bptr - ETH_ALEN) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4759 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4760 |
+ if (memcmp (obptr, obptr + ETH_ALEN, ETH_ALEN) == 0) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4761 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4762 |
+ memmove (obptr, obptr + ETH_ALEN, (bptr - obptr) - ETH_ALEN); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4763 |
+ bptr -= ETH_ALEN; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4764 |
+ numbytes -= ETH_ALEN; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4765 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4766 |
+ else |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4767 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4768 |
+ obptr += ETH_ALEN; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4769 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4770 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4771 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4772 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4773 |
+ /* Store the root bridge byte count here for the caller */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4774 |
+ vlantlv->vlan_end = numbytes; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4775 |
+ return circnt; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4776 |
+} |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4777 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4778 |
+/* |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4779 |
+ * Add TLVs necessary to advertise TRILL nickname using router capabilities TLV |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4780 |
+ */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4781 |
+int |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4782 |
+tlv_add_trill_nickname(struct trill_nickname *nick_info, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4783 |
+ struct stream *stream, struct isis_area *area) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4784 |
+{ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4785 |
+ size_t tlvstart; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4786 |
+ struct router_capability_tlv rtcap; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4787 |
+ u_char tflags; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4788 |
+ struct trill_nickname_subtlv tn; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4789 |
+ int rc; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4790 |
+ int vlan; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4791 |
+ int circnt; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4792 |
+ int nbytes; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4793 |
+ struct trill_vlan_bridge_roots_subtlv *lastvlantlv, *nextvlantlv; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4794 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4795 |
+ tlvstart = stream_get_endp (stream); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4796 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4797 |
+ (void) memset(&rtcap, 0, sizeof (rtcap)); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4798 |
+ rc = add_tlv(ROUTER_CAPABILITY, sizeof (rtcap), (uchar_t *)&rtcap, stream); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4799 |
+ if (rc != ISIS_OK) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4800 |
+ return rc; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4801 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4802 |
+ tflags = TRILL_FLAGS_V0; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4803 |
+ rc = add_subtlv (RCSTLV_TRILL_FLAGS, sizeof (tflags), (uchar_t *)&tflags, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4804 |
+ tlvstart, stream); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4805 |
+ if (rc != ISIS_OK) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4806 |
+ return rc; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4807 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4808 |
+ tn.tn_priority = nick_info->priority; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4809 |
+ tn.tn_nickname = nick_info->name; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4810 |
+ tn.tn_trootpri = htons(area->trill->root_priority); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4811 |
+ tn.tn_treecount = htons(0); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4812 |
+ rc = add_subtlv (RCSTLV_TRILL_NICKNAME, sizeof (tn), (uchar_t *)&tn, tlvstart, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4813 |
+ stream); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4814 |
+ if (rc != ISIS_OK) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4815 |
+ return rc; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4816 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4817 |
+ /* |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4818 |
+ * The algorithm below is designed to find the set of VLANs for which we are |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4819 |
+ * appointed forwarder for at least one circuit, and organize them into lists |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4820 |
+ * (each with a separate sub-TLV) based on root 802.1D bridge ID. The lists |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4821 |
+ * must be contiguous and must have exactly the same set of root IDs, but |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4822 |
+ * need not have the same set of circuits involved. |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4823 |
+ * |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4824 |
+ * We currently don't support multicast snooping, so the complexities of the |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4825 |
+ * M4/M6/OM bits are spared here. |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4826 |
+ */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4827 |
+ circnt = listcount(area->circuit_list); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4828 |
+ if (circnt == 0) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4829 |
+ return rc; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4830 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4831 |
+ /* Aligned: Ethernet addresses are 6 bytes, and the subTLV uses uint16_t */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4832 |
+ lastvlantlv = XMALLOC (MTYPE_ISIS_TRILL_VLANSUBTLV, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4833 |
+ 2 * (sizeof (*lastvlantlv) + circnt * ETH_ALEN)); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4834 |
+ nextvlantlv = (struct trill_vlan_bridge_roots_subtlv *) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4835 |
+ ((char *)(lastvlantlv + 1) + circnt * ETH_ALEN); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4836 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4837 |
+ vlan = circnt = 0; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4838 |
+ while (vlan <= VLAN_MAX) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4839 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4840 |
+ /* |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4841 |
+ * If this is the first VLAN or if the last pass ended on an unused VLAN, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4842 |
+ * then scan ahead to find the start of the next range that's in use. |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4843 |
+ * Otherwise, copy down the last one found. |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4844 |
+ */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4845 |
+ if (circnt == 0) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4846 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4847 |
+ for (vlan++; vlan <= VLAN_MAX; vlan++) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4848 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4849 |
+ circnt = gather_bridge_ids (area, lastvlantlv, vlan); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4850 |
+ if (circnt != 0) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4851 |
+ break; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4852 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4853 |
+ if (circnt == 0) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4854 |
+ break; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4855 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4856 |
+ else |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4857 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4858 |
+ memcpy (lastvlantlv, nextvlantlv, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4859 |
+ nextvlantlv->vlan_end + sizeof (*nextvlantlv)); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4860 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4861 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4862 |
+ /* |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4863 |
+ * Set the multicast bits, because we don't support IGMP/MLD |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4864 |
+ * snooping, and we thus need to see all multicast frames. |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4865 |
+ */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4866 |
+ lastvlantlv->vlan_start = htons (vlan | TVRFS_M4 | TVRFS_M6 | TVRFS_OM); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4867 |
+ nbytes = lastvlantlv->vlan_end; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4868 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4869 |
+ /* |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4870 |
+ * Now locate the end of the compatible set of VLANs: these are the ones |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4871 |
+ * where we're appointed forwarder on at least one circuit, and the list |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4872 |
+ * of root bridge IDs is identical to the current one. |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4873 |
+ */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4874 |
+ for (vlan++; vlan <= VLAN_MAX; vlan++) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4875 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4876 |
+ circnt = gather_bridge_ids (area, nextvlantlv, vlan); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4877 |
+ if (circnt == 0 || nbytes != nextvlantlv->vlan_end || |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4878 |
+ memcmp (lastvlantlv + 1, nextvlantlv + 1, nbytes != 0)) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4879 |
+ break; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4880 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4881 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4882 |
+ lastvlantlv->vlan_end = htons (vlan - 1); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4883 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4884 |
+ /* |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4885 |
+ * Insert the subTLV into the list, starting a new TLV if it won't fit in |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4886 |
+ * the current one. |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4887 |
+ */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4888 |
+ nbytes += sizeof (*lastvlantlv); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4889 |
+ rc = add_subtlv (RCSTLV_TRILL_VLANSROOTS, nbytes, (uchar_t *)lastvlantlv, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4890 |
+ tlvstart, stream); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4891 |
+ if (rc == ISIS_WARNING) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4892 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4893 |
+ tlvstart = stream_get_endp (stream); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4894 |
+ rc = add_tlv(ROUTER_CAPABILITY, sizeof (rtcap), (uchar_t *)&rtcap, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4895 |
+ stream); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4896 |
+ if (rc != ISIS_OK) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4897 |
+ break; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4898 |
+ rc = add_subtlv (RCSTLV_TRILL_VLANSROOTS, nbytes, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4899 |
+ (uchar_t *)lastvlantlv, tlvstart, stream); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4900 |
+ if (rc != ISIS_OK) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4901 |
+ break; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4902 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4903 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4904 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4905 |
+ XFREE (MTYPE_ISIS_TRILL_VLANSUBTLV, lastvlantlv); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4906 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4907 |
+ return rc; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4908 |
+} |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4909 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4910 |
+DEFUN (debug_trill_events, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4911 |
+ debug_trill_events_cmd, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4912 |
+ "debug trill events", |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4913 |
+ DEBUG_STR |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4914 |
+ "IS-IS information\n" |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4915 |
+ "IS-IS TRILL Events\n") |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4916 |
+{ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4917 |
+ isis->debugs |= DEBUG_TRILL_EVENTS; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4918 |
+ print_debug (vty, DEBUG_TRILL_EVENTS, 1); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4919 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4920 |
+ return CMD_SUCCESS; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4921 |
+} |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4922 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4923 |
+DEFUN (no_debug_trill_events, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4924 |
+ no_debug_trill_events_cmd, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4925 |
+ "no debug trill events", |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4926 |
+ UNDEBUG_STR |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4927 |
+ "IS-IS information\n" |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4928 |
+ "IS-IS TRILL Events\n") |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4929 |
+{ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4930 |
+ isis->debugs &= ~DEBUG_TRILL_EVENTS; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4931 |
+ print_debug (vty, DEBUG_TRILL_EVENTS, 0); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4932 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4933 |
+ return CMD_SUCCESS; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4934 |
+} |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4935 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4936 |
+DEFUN (show_trill_nickdatabase, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4937 |
+ show_trill_nickdatabase_cmd, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4938 |
+ "show trill nickname database", |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4939 |
+ SHOW_STR TRILL_STR "TRILL IS-IS nickname information\n" |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4940 |
+ "IS-IS TRILL nickname database\n") |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4941 |
+{ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4942 |
+ struct listnode *node; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4943 |
+ struct isis_area *area; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4944 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4945 |
+ if (!isis->trill_active || (isis->area_list->count == 0)) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4946 |
+ return CMD_SUCCESS; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4947 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4948 |
+ assert (isis->area_list->count == 1); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4949 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4950 |
+ for (ALL_LIST_ELEMENTS_RO (isis->area_list, node, area)) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4951 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4952 |
+ vty_out (vty, "Area %s nickname:%d priority:%d%s%s", |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4953 |
+ area->area_tag ? area->area_tag : "null", |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4954 |
+ ntohs(area->trill->nick.name), area->trill->nick.priority, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4955 |
+ VTY_NEWLINE, VTY_NEWLINE); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4956 |
+ vty_out (vty, "IS-IS TRILL nickname database:%s", VTY_NEWLINE); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4957 |
+ trill_nickdb_print (vty, area); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4958 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4959 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4960 |
+ vty_out (vty, "%s%s", VTY_NEWLINE, VTY_NEWLINE); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4961 |
+ return CMD_SUCCESS; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4962 |
+} |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4963 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4964 |
+DEFUN (show_trill_fwdtable, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4965 |
+ show_trill_fwdtable_cmd, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4966 |
+ "show trill forwarding", |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4967 |
+ SHOW_STR TRILL_STR |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4968 |
+ "IS-IS TRILL forwarding table\n") |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4969 |
+{ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4970 |
+ struct listnode *node; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4971 |
+ struct isis_area *area; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4972 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4973 |
+ if (!isis->trill_active || (isis->area_list->count == 0)) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4974 |
+ return CMD_SUCCESS; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4975 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4976 |
+ assert (isis->area_list->count == 1); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4977 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4978 |
+ for (ALL_LIST_ELEMENTS_RO (isis->area_list, node, area)) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4979 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4980 |
+ vty_out (vty, "IS-IS TRILL forwarding table:%s", VTY_NEWLINE); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4981 |
+ trill_fwdtbl_print (vty, area); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4982 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4983 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4984 |
+ vty_out (vty, "%s%s", VTY_NEWLINE, VTY_NEWLINE); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4985 |
+ return CMD_SUCCESS; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4986 |
+} |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4987 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4988 |
+DEFUN (show_trill_circuits, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4989 |
+ show_trill_circuits_cmd, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4990 |
+ "show trill circuits", |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4991 |
+ SHOW_STR TRILL_STR |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4992 |
+ "IS-IS TRILL circuits\n") |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4993 |
+{ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4994 |
+ struct listnode *node; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4995 |
+ struct isis_area *area; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4996 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4997 |
+ if (!isis->trill_active || (isis->area_list->count == 0)) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4998 |
+ return CMD_SUCCESS; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
4999 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5000 |
+ assert (isis->area_list->count == 1); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5001 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5002 |
+ for (ALL_LIST_ELEMENTS_RO (isis->area_list, node, area)) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5003 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5004 |
+ vty_out (vty, "IS-IS TRILL circuits:%s%s", |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5005 |
+ VTY_NEWLINE, VTY_NEWLINE); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5006 |
+ trill_circuits_print_all (vty, area); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5007 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5008 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5009 |
+ vty_out (vty, "%s%s", VTY_NEWLINE, VTY_NEWLINE); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5010 |
+ return CMD_SUCCESS; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5011 |
+} |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5012 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5013 |
+DEFUN (show_trill_adjtable, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5014 |
+ show_trill_adjtable_cmd, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5015 |
+ "show trill adjacencies", |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5016 |
+ SHOW_STR TRILL_STR |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5017 |
+ "IS-IS TRILL adjacency lists\n") |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5018 |
+{ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5019 |
+ struct listnode *node; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5020 |
+ struct isis_area *area; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5021 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5022 |
+ if (!isis->trill_active || (isis->area_list->count == 0)) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5023 |
+ return CMD_SUCCESS; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5024 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5025 |
+ assert (isis->area_list->count == 1); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5026 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5027 |
+ for (ALL_LIST_ELEMENTS_RO (isis->area_list, node, area)) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5028 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5029 |
+ vty_out (vty, "IS-IS TRILL adjacencies in all distribution trees:%s%s", |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5030 |
+ VTY_NEWLINE, VTY_NEWLINE); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5031 |
+ trill_adjtbl_print_all (vty, area); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5032 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5033 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5034 |
+ vty_out (vty, "%s%s", VTY_NEWLINE, VTY_NEWLINE); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5035 |
+ return CMD_SUCCESS; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5036 |
+} |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5037 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5038 |
+/* |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5039 |
+ * Enable TRILL support in IS-IS command, only one IS-IS area allowed. |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5040 |
+ */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5041 |
+DEFUN (isis_trill, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5042 |
+ isis_trill_cmd, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5043 |
+ "isis trill", |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5044 |
+ "Enable use of IS-IS as routing protocol for TRILL\n") |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5045 |
+{ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5046 |
+ if (!isis->trill_active && isis->area_list->count > 0) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5047 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5048 |
+ vty_out (vty, "Cannot enable TRILL. IS-IS area already configured%s", |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5049 |
+ VTY_NEWLINE); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5050 |
+ return CMD_WARNING; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5051 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5052 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5053 |
+ isis->trill_active = TRUE; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5054 |
+ return CMD_SUCCESS; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5055 |
+} |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5056 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5057 |
+/* |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5058 |
+ * Disable TRILL support in IS-IS command |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5059 |
+ */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5060 |
+DEFUN (no_isis_trill, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5061 |
+ no_isis_trill_cmd, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5062 |
+ "no isis trill", |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5063 |
+ "Disable use of IS-IS as routing protocol for TRILL\n") |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5064 |
+{ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5065 |
+ isis->trill_active = FALSE; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5066 |
+ return CMD_SUCCESS; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5067 |
+} |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5068 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5069 |
+DEFUN (trill_nickname, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5070 |
+ trill_nickname_cmd, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5071 |
+ "trill nickname WORD", |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5072 |
+ TRILL_STR |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5073 |
+ TRILL_NICK_STR |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5074 |
+ "<1-65534>\n") |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5075 |
+{ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5076 |
+ struct isis_area *area; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5077 |
+ u_int16_t nickname; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5078 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5079 |
+ area = vty->index; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5080 |
+ assert (area); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5081 |
+ assert (area->isis); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5082 |
+ if (!area->isis->trill_active) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5083 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5084 |
+ vty_out (vty, "TRILL is not enabled%s", VTY_NEWLINE); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5085 |
+ return CMD_WARNING; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5086 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5087 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5088 |
+ VTY_GET_INTEGER_RANGE ("TRILL nickname", nickname, argv[0], |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5089 |
+ RBRIDGE_NICKNAME_MIN + 1, RBRIDGE_NICKNAME_MAX); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5090 |
+ if (!trill_area_nickname (area, nickname)) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5091 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5092 |
+ vty_out (vty, "TRILL nickname conflicts with another RBridge nickname," |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5093 |
+ " must select another.%s", VTY_NEWLINE); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5094 |
+ return CMD_WARNING; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5095 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5096 |
+ return CMD_SUCCESS; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5097 |
+} |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5098 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5099 |
+DEFUN (no_trill_nickname, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5100 |
+ no_trill_nickname_cmd, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5101 |
+ "no trill nickname", |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5102 |
+ TRILL_STR |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5103 |
+ TRILL_NICK_STR) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5104 |
+{ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5105 |
+ struct isis_area *area; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5106 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5107 |
+ area = vty->index; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5108 |
+ assert (area); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5109 |
+ assert (area->isis); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5110 |
+ if (!area->isis->trill_active) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5111 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5112 |
+ vty_out (vty, "TRILL is not enabled%s", VTY_NEWLINE); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5113 |
+ return CMD_WARNING; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5114 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5115 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5116 |
+ trill_area_nickname (area, 0); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5117 |
+ return CMD_SUCCESS; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5118 |
+} |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5119 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5120 |
+DEFUN (trill_nickname_priority, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5121 |
+ trill_nickname_priority_cmd, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5122 |
+ "trill nickname priority WORD", |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5123 |
+ TRILL_STR |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5124 |
+ TRILL_NICK_STR |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5125 |
+ "priority of use field\n" |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5126 |
+ "<1-127>\n") |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5127 |
+{ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5128 |
+ struct isis_area *area; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5129 |
+ u_int8_t priority; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5130 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5131 |
+ area = vty->index; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5132 |
+ assert (area); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5133 |
+ assert (area->isis); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5134 |
+ if (!area->isis->trill_active) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5135 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5136 |
+ vty_out (vty, "TRILL is not enabled%s", VTY_NEWLINE); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5137 |
+ return CMD_WARNING; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5138 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5139 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5140 |
+ VTY_GET_INTEGER_RANGE ("TRILL nickname priority", priority, argv[0], |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5141 |
+ MIN_RBRIDGE_PRIORITY, MAX_RBRIDGE_PRIORITY); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5142 |
+ trill_nickname_priority_update (area, priority); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5143 |
+ return CMD_SUCCESS; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5144 |
+} |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5145 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5146 |
+DEFUN (no_trill_nickname_priority, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5147 |
+ no_trill_nickname_priority_cmd, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5148 |
+ "no trill nickname priority WORD", |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5149 |
+ TRILL_STR |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5150 |
+ TRILL_NICK_STR |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5151 |
+ "priority of use field\n") |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5152 |
+{ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5153 |
+ struct isis_area *area; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5154 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5155 |
+ area = vty->index; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5156 |
+ assert (area); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5157 |
+ assert (area->isis); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5158 |
+ if (!area->isis->trill_active) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5159 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5160 |
+ vty_out (vty, "TRILL is not enabled%s", VTY_NEWLINE); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5161 |
+ return CMD_WARNING; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5162 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5163 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5164 |
+ trill_nickname_priority_update (area, 0); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5165 |
+ return CMD_SUCCESS; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5166 |
+} |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5167 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5168 |
+DEFUN (trill_instance, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5169 |
+ trill_instance_cmd, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5170 |
+ "trill instance WORD", |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5171 |
+ TRILL_STR |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5172 |
+ "TRILL instance\n" |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5173 |
+ "instance name\n") |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5174 |
+{ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5175 |
+ struct isis_area *area; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5176 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5177 |
+ area = vty->index; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5178 |
+ assert (area); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5179 |
+ assert (area->isis); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5180 |
+ if (!area->isis->trill_active) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5181 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5182 |
+ vty_out (vty, "TRILL is not enabled%s", VTY_NEWLINE); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5183 |
+ return CMD_WARNING; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5184 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5185 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5186 |
+ (void) strlcpy(area->trill->name, argv[0], MAXLINKNAMELEN); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5187 |
+ return CMD_SUCCESS; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5188 |
+} |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5189 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5190 |
+void |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5191 |
+install_trill_elements (void) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5192 |
+{ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5193 |
+ install_element (VIEW_NODE, &show_trill_nickdatabase_cmd); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5194 |
+ install_element (VIEW_NODE, &show_trill_fwdtable_cmd); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5195 |
+ install_element (VIEW_NODE, &show_trill_adjtable_cmd); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5196 |
+ install_element (VIEW_NODE, &show_trill_circuits_cmd); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5197 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5198 |
+ install_element (ENABLE_NODE, &debug_trill_events_cmd); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5199 |
+ install_element (ENABLE_NODE, &no_debug_trill_events_cmd); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5200 |
+ install_element (ENABLE_NODE, &show_trill_nickdatabase_cmd); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5201 |
+ install_element (ENABLE_NODE, &show_trill_fwdtable_cmd); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5202 |
+ install_element (ENABLE_NODE, &show_trill_adjtable_cmd); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5203 |
+ install_element (ENABLE_NODE, &show_trill_circuits_cmd); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5204 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5205 |
+ install_element (CONFIG_NODE, &debug_trill_events_cmd); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5206 |
+ install_element (CONFIG_NODE, &no_debug_trill_events_cmd); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5207 |
+ install_element (CONFIG_NODE, &isis_trill_cmd); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5208 |
+ install_element (CONFIG_NODE, &no_isis_trill_cmd); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5209 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5210 |
+ install_element (ISIS_NODE, &trill_nickname_cmd); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5211 |
+ install_element (ISIS_NODE, &no_trill_nickname_cmd); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5212 |
+ install_element (ISIS_NODE, &trill_nickname_priority_cmd); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5213 |
+ install_element (ISIS_NODE, &no_trill_nickname_priority_cmd); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5214 |
+ install_element (ISIS_NODE, &trill_instance_cmd); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5215 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5216 |
+ install_trill_vlan_elements (); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5217 |
+} |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5218 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5219 |
+static int |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5220 |
+update_link(dladm_handle_t handle, datalink_id_t linkid, void *arg) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5221 |
+{ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5222 |
+ struct isis_area *area = arg; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5223 |
+ dladm_status_t status; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5224 |
+ char bridge[MAXLINKNAMELEN], linkname[MAXLINKNAMELEN]; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5225 |
+ char pointless[DLADM_STRSIZE]; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5226 |
+ datalink_class_t class; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5227 |
+ struct interface *ifp; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5228 |
+ struct isis_circuit *circ; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5229 |
+ uint_t propval, valcnt; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5230 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5231 |
+ status = dladm_bridge_getlink (handle, linkid, bridge, sizeof (bridge)); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5232 |
+ if (status != DLADM_STATUS_OK || strcmp (bridge, area->trill->name) != 0) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5233 |
+ return DLADM_WALK_CONTINUE; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5234 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5235 |
+ status = dladm_datalink_id2info (handle, linkid, NULL, &class, NULL, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5236 |
+ linkname, sizeof (linkname)); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5237 |
+ if (status == DLADM_STATUS_OK) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5238 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5239 |
+ ifp = if_get_by_name (linkname); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5240 |
+ ifp->ifindex = linkid; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5241 |
+ ifp->flags |= IFF_UP | IFF_RUNNING; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5242 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5243 |
+ /* |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5244 |
+ * This value is arbitrary. The real interface MTU will be read out of |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5245 |
+ * the kernel when isis_circuit_up calls the TRILL socket interface. |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5246 |
+ */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5247 |
+ if (ifp->mtu == 0) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5248 |
+ ifp->mtu = 1500; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5249 |
+ *(datalink_id_t *)ifp->sdl.sdl_data = linkid; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5250 |
+ ifp->sdl.sdl_nlen = sizeof (datalink_id_t); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5251 |
+ if ((circ = ifp->info) == NULL) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5252 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5253 |
+ circ = isis_csm_state_change (IF_UP_FROM_Z, NULL, ifp); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5254 |
+ circ = isis_csm_state_change (ISIS_ENABLE, circ, area); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5255 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5256 |
+ /* |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5257 |
+ * The second state change has caused us to open up the socket for this |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5258 |
+ * link and read the Ethernet address. Copy that into place for the |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5259 |
+ * interface structure. |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5260 |
+ */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5261 |
+ ifp->sdl.sdl_alen = ETH_ALEN; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5262 |
+ memcpy (LLADDR (&ifp->sdl), circ->u.bc.snpa, ETH_ALEN); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5263 |
+ valcnt = 1; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5264 |
+ status = dladm_get_linkprop_values (dlhandle, linkid, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5265 |
+ DLADM_PROP_VAL_PERSISTENT, "default_tag", &propval, &valcnt); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5266 |
+ if (status == DLADM_STATUS_OK) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5267 |
+ circ->vlans->pvid = propval; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5268 |
+ memset (circ->vlans->enabled, 0, VLANS_ARRSIZE); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5269 |
+ if (circ->vlans->pvid != 0) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5270 |
+ SET_VLAN (circ->vlans->enabled, circ->vlans->pvid); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5271 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5272 |
+ else |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5273 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5274 |
+ zlog_err ("unable to get link info for ID %u: %s", linkid, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5275 |
+ dladm_status2str (status, pointless)); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5276 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5277 |
+ return DLADM_WALK_CONTINUE; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5278 |
+} |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5279 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5280 |
+static int |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5281 |
+set_vlan(dladm_handle_t handle, datalink_id_t linkid, void *arg) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5282 |
+{ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5283 |
+ dladm_status_t status; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5284 |
+ dladm_vlan_attr_t vinfo; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5285 |
+ char pointless[DLADM_STRSIZE]; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5286 |
+ struct interface *ifp; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5287 |
+ struct isis_circuit *circuit; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5288 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5289 |
+ status = dladm_vlan_info (handle, linkid, &vinfo, DLADM_OPT_ACTIVE); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5290 |
+ if (status != DLADM_STATUS_OK) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5291 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5292 |
+ zlog_debug ("can't get VLAN info on link ID %u: %s", |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5293 |
+ linkid, dladm_status2str (status, pointless)); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5294 |
+ return DLADM_WALK_CONTINUE; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5295 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5296 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5297 |
+ ifp = if_lookup_by_index (vinfo.dv_linkid); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5298 |
+ if (ifp != NULL) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5299 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5300 |
+ circuit = ifp->info; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5301 |
+ SET_VLAN (circuit->vlans->enabled, vinfo.dv_vid); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5302 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5303 |
+ return DLADM_WALK_CONTINUE; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5304 |
+} |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5305 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5306 |
+static char |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5307 |
+trill_internal_reload(struct isis_area *area) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5308 |
+{ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5309 |
+ struct interface *ifp; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5310 |
+ struct listnode *node, *nnode; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5311 |
+ struct isis_circuit *circ; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5312 |
+ dladm_status_t status; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5313 |
+ char errmsg[DLADM_STRSIZE]; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5314 |
+ |
855
e14713202945
7173355 quagga packages need to be updated to reflect libdladm changes
Renee Danson Sommerfeld <Renee.Sommerfeld@Oracle.COM>
parents:
641
diff
changeset
|
5315 |
+ if ((status = dladm_open (&dlhandle, NETADM_ACTIVE_PROFILE)) |
e14713202945
7173355 quagga packages need to be updated to reflect libdladm changes
Renee Danson Sommerfeld <Renee.Sommerfeld@Oracle.COM>
parents:
641
diff
changeset
|
5316 |
+ != DLADM_STATUS_OK) |
417
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5317 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5318 |
+ zlog_err ("%s: unable to open datalink control: %s", |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5319 |
+ area->trill->name, dladm_status2str(status, errmsg)); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5320 |
+ return FALSE; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5321 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5322 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5323 |
+ /* |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5324 |
+ * Turn off the IFF_UP bit for every link. Any links left over at the end |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5325 |
+ * without that flag must have been removed. |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5326 |
+ */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5327 |
+ for (ALL_LIST_ELEMENTS_RO (iflist, node, ifp)) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5328 |
+ ifp->flags &= ~IFF_UP; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5329 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5330 |
+ /* Get all of the links configured on this bridge */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5331 |
+ dladm_walk_datalink_id (update_link, dlhandle, area, DATALINK_CLASS_ALL, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5332 |
+ DATALINK_ANY_MEDIATYPE, DLADM_OPT_ACTIVE); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5333 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5334 |
+ /* Disable ones that have been removed */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5335 |
+ for (ALL_LIST_ELEMENTS (iflist, node, nnode, ifp)) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5336 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5337 |
+ if (!(ifp->flags & IFF_UP) && (circ = ifp->info) != NULL) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5338 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5339 |
+ isis_csm_state_change (ISIS_DISABLE, circ, area); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5340 |
+ isis_csm_state_change (IF_DOWN_FROM_Z, circ, area); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5341 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5342 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5343 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5344 |
+ /* Now get the VLANs */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5345 |
+ dladm_walk_datalink_id (set_vlan, dlhandle, area, DATALINK_CLASS_VLAN, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5346 |
+ DATALINK_ANY_MEDIATYPE, DLADM_OPT_ACTIVE); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5347 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5348 |
+ dladm_close (dlhandle); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5349 |
+ return TRUE; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5350 |
+} |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5351 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5352 |
+/* |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5353 |
+ * This is run synchronously by the interrupt handling logic when SIGHUP |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5354 |
+ * occurs. We use this to signal a "refresh" from SMF. If the user has |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5355 |
+ * specified an explicit configuration file, or if the update fails, then we |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5356 |
+ * just fall through to the normal reload (by way of exec) mechanism. |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5357 |
+ */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5358 |
+char |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5359 |
+trill_reload(void) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5360 |
+{ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5361 |
+ if (cfile_present) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5362 |
+ return FALSE; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5363 |
+ else |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5364 |
+ return trill_internal_reload (listgetdata (listhead (isis->area_list))); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5365 |
+} |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5366 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5367 |
+/* |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5368 |
+ * This function runs before the regular configuration file (if any) is read, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5369 |
+ * and simulates a configuration read by setting up internal information based |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5370 |
+ * on data stored in dladm. The user may override this configuration (for |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5371 |
+ * debugging purposes) by specifying a configuration file on the command line. |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5372 |
+ * Otherwise, we force the caller to read /dev/null. |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5373 |
+ */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5374 |
+void |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5375 |
+trill_read_config (char **cfilep, int argc, char **argv) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5376 |
+{ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5377 |
+ const char *instname; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5378 |
+ u_int16_t nickname; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5379 |
+ struct isis_area *area; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5380 |
+ struct listnode *ifnode; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5381 |
+ struct interface *ifp; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5382 |
+ struct area_addr *addr; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5383 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5384 |
+ zlog_set_level (NULL, ZLOG_DEST_SYSLOG, LOG_WARNING); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5385 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5386 |
+ if (optind != argc - 1) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5387 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5388 |
+ zlog_err ("instance name is required for TRILL"); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5389 |
+ exit (1); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5390 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5391 |
+ instname = argv[optind]; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5392 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5393 |
+ isis->trill_active = TRUE; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5394 |
+ area = isis_area_create (instname); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5395 |
+ (void) strlcpy (area->trill->name, instname, MAXLINKNAMELEN); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5396 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5397 |
+ /* Set up to use new (extended) metrics only. */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5398 |
+ area->newmetric = 1; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5399 |
+ area->oldmetric = 0; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5400 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5401 |
+ /* IS-IS for TRILL is different from the standard; it uses one area address */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5402 |
+ isis->max_area_addrs = 1; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5403 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5404 |
+ if (!trill_internal_reload (area)) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5405 |
+ exit(1); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5406 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5407 |
+ /* Recover a previous nickname, if any. */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5408 |
+ nickname = dladm_bridge_get_nick(instname); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5409 |
+ if (nickname != RBRIDGE_NICKNAME_NONE && is_nickname_used (nickname)) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5410 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5411 |
+ zlog_warn ("%s: unable to use previous nickname %u", instname, nickname); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5412 |
+ nickname = RBRIDGE_NICKNAME_NONE; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5413 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5414 |
+ if (nickname != RBRIDGE_NICKNAME_NONE) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5415 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5416 |
+ area->trill->nick.name = htons (nickname); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5417 |
+ SET_FLAG (area->trill->status, TRILL_NICK_SET); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5418 |
+ SET_FLAG (area->trill->status, TRILL_AUTONICK); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5419 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5420 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5421 |
+ /* Set up the area and system ID */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5422 |
+ ifnode = listhead (iflist); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5423 |
+ if (ifnode != NULL) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5424 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5425 |
+ ifp = listgetdata (ifnode); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5426 |
+ addr = XMALLOC (MTYPE_ISIS_AREA_ADDR, sizeof (struct area_addr)); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5427 |
+ addr->addr_len = 8; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5428 |
+ addr->area_addr[0] = 0; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5429 |
+ memcpy (addr->area_addr + 1, LLADDR (&ifp->sdl), ifp->sdl.sdl_alen); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5430 |
+ addr->area_addr[7] = 0; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5431 |
+ memcpy (isis->sysid, GETSYSID (addr, ISIS_SYS_ID_LEN), ISIS_SYS_ID_LEN); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5432 |
+ isis->sysid_set = 1; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5433 |
+ /* Forget the systemID part of the address */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5434 |
+ addr->addr_len -= (ISIS_SYS_ID_LEN + 1); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5435 |
+ listnode_add (area->area_addrs, addr); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5436 |
+ lsp_l1_generate (area); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5437 |
+ lsp_l2_generate (area); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5438 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5439 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5440 |
+ if (*cfilep == NULL) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5441 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5442 |
+ *(const char **)cfilep = "/dev/null"; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5443 |
+ cfile_present = FALSE; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5444 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5445 |
+} |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5446 |
diff --git isisd/isis_trill.h isisd/isis_trill.h |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5447 |
new file mode 100644 |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5448 |
index 0000000..88b9f83 |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5449 |
--- /dev/null |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5450 |
+++ isisd/isis_trill.h |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5451 |
@@ -0,0 +1,148 @@ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5452 |
+/* |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5453 |
+ * IS-IS Rout(e)ing protocol - isis_trill.h |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5454 |
+ * |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5455 |
+ * Copyright (c) 2009, 2011, Oracle and/or its affiliates. All rights reserved. |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5456 |
+ * |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5457 |
+ * This program is free software; you can redistribute it and/or modify it |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5458 |
+ * under the terms of the GNU General Public Licenseas published by the Free |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5459 |
+ * Software Foundation; either version 2 of the License, or (at your option) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5460 |
+ * any later version. |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5461 |
+ * |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5462 |
+ * This program is distributed in the hope that it will be useful,but WITHOUT |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5463 |
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5464 |
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5465 |
+ * more details. |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5466 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5467 |
+ * You should have received a copy of the GNU General Public License along |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5468 |
+ * with this program; if not, write to the Free Software Foundation, Inc., |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5469 |
+ * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5470 |
+ */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5471 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5472 |
+#ifndef _ZEBRA_ISIS_TRILL_H |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5473 |
+#define _ZEBRA_ISIS_TRILL_H |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5474 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5475 |
+#define ISO_BPDU 0x42 |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5476 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5477 |
+/* IETF TRILL protocol defined constants */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5478 |
+#define DFLT_NICK_PRIORITY 0x40 /* Default priority for autogen nicks */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5479 |
+#define CONFIGURED_NICK_PRIORITY 0x80 /* MSB of priority set if nick is configured */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5480 |
+#define MIN_RBRIDGE_PRIORITY 1 /* Min priority of use value */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5481 |
+#define MAX_RBRIDGE_PRIORITY 127 /* Max priority of use value */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5482 |
+#define MAX_RBRIDGE_NODES (RBRIDGE_NICKNAME_MAX + 1) /* Max RBridges possible */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5483 |
+#define TRILL_NICKNAME_LEN 2 /* 16-bit nickname */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5484 |
+#define TRILL_DFLT_ROOT_PRIORITY 0x8000 /* Default tree root priority */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5485 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5486 |
+/* Constants used in nickname generation/allocation */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5487 |
+#define NICKNAMES_BITARRAY_SIZE (MAX_RBRIDGE_NODES / 8) /* nick usage array */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5488 |
+#define CLEAR_BITARRAY_ENTRYLEN 4 /* stores nicks available per 32 nicks in nick bitarray */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5489 |
+#define CLEAR_BITARRAY_ENTRYLENBITS (4*8) /* 32 nicks tracked in each entry */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5490 |
+#define CLEAR_BITARRAY_SIZE (MAX_RBRIDGE_NODES / CLEAR_BITARRAY_ENTRYLENBITS) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5491 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5492 |
+/* Constants used to track LSP DB acquisition */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5493 |
+#define MIN_LSPDB_ACQTRIES 2 /* min two LSP PSNP/CSNP send/recv for LSP DB acquisition */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5494 |
+#define MAX_LSPDB_ACQTRIES 6 /* max LSP PSNP/CSNP send/recv for LSP DB acquisition on any circuit */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5495 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5496 |
+/* Macros used to track LSP DB acquisition */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5497 |
+#define LSPDB_ACQTRYINC(F, C) ((F)->trill->lspdb_acq_reqs[(C)])++ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5498 |
+#define LSPDB_ACQTRYVAL(F, C) ((F)->trill->lspdb_acq_reqs[(C)]) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5499 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5500 |
+/* trill_info status flags */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5501 |
+#define TRILL_AUTONICK (1 << 0) /* nickname auto-generated (else user-provided) */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5502 |
+#define TRILL_LSPDB_ACQUIRED (1 << 1) /* LSP DB acquired before autogen nick is advertised */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5503 |
+#define TRILL_NICK_SET (1 << 2) /* nickname configured (random/user generated) */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5504 |
+#define TRILL_PRIORITY_SET (1 << 3) /* nickname priority configured by user */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5505 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5506 |
+/* TRILL information (area-specific) */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5507 |
+struct trill_info |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5508 |
+{ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5509 |
+ struct trill_nickname nick; /* our nick */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5510 |
+ int status; /* status flags */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5511 |
+ dict_t *nickdb; /* TRILL nickname database */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5512 |
+ dict_t *sysidtonickdb; /* TRILL sysid-to-nickname database */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5513 |
+ /* counter used in LSP database acquisition (per circuit) */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5514 |
+ u_int8_t lspdb_acq_reqs [ISIS_MAX_CIRCUITS_COUNT]; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5515 |
+ struct list *fwdtbl; /* RBridge forwarding table */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5516 |
+ struct list *adjnodes; /* Adjacent nicks for our distrib. tree */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5517 |
+ struct list *dt_roots; /* Our choice of DT roots */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5518 |
+ struct list *vlans_reachable; /* Per adj and per tree vlans reachable downstream list */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5519 |
+ u_int16_t root_priority; /* Root tree priority */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5520 |
+ char name[MAXLINKNAMELEN]; /* instance name */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5521 |
+}; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5522 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5523 |
+/* TRILL nickname information (node-specific) */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5524 |
+typedef struct nickinfo |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5525 |
+{ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5526 |
+ struct trill_nickname nick; /* Nick of the node */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5527 |
+ u_char sysid[ISIS_SYS_ID_LEN]; /* NET/sysid of node */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5528 |
+ u_int8_t flags; /* TRILL flags advertised by node */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5529 |
+ struct list *dt_roots; /* Distrib. Trees chosen by node */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5530 |
+ u_int16_t root_priority; /* Root tree priority */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5531 |
+ u_int16_t root_count; /* Root tree count */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5532 |
+ struct list *broots; /* VLANs and Bridge roots */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5533 |
+ u_int8_t vlans_forwarder[VLANS_ARRSIZE]; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5534 |
+} nickinfo_t; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5535 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5536 |
+/* Nickname database node */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5537 |
+typedef struct trill_nickdb_node |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5538 |
+{ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5539 |
+ nickinfo_t info; /* Nick info of the node */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5540 |
+ struct isis_spftree *rdtree; /* RBridge distribution tree with this nick as root */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5541 |
+ struct list *adjnodes; /* Our (host RBridge) adjacent nicks on this distrib. tree */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5542 |
+ struct list *vlans_reachable; /* Per adj and per tree vlans reachable downstream list */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5543 |
+ u_int32_t refcnt; /* ref count */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5544 |
+} nicknode_t; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5545 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5546 |
+/* RBridge search function return status codes */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5547 |
+typedef enum |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5548 |
+{ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5549 |
+ NOTFOUND = 1, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5550 |
+ FOUND, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5551 |
+ DUPLICATE, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5552 |
+ NICK_CHANGED, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5553 |
+ PRIORITY_CHANGE_ONLY |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5554 |
+} nickdb_search_result; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5555 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5556 |
+/* LSP database acquisition process states */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5557 |
+typedef enum |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5558 |
+{ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5559 |
+ CSNPRCV = 0, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5560 |
+ CSNPSND, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5561 |
+ PSNPSNDTRY, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5562 |
+} lspdbacq_state; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5563 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5564 |
+/* RBridge forwarding table node (1 table per area) */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5565 |
+typedef struct nickfwdtable_node |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5566 |
+{ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5567 |
+ u_int16_t dest_nick; /* destination RBridge nick */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5568 |
+ u_char adj_snpa[ETH_ALEN]; /* MAC address of the adj node */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5569 |
+ struct interface *interface; /* if to reach the adj/neigh */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5570 |
+} nickfwdtblnode_t; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5571 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5572 |
+void trill_read_config (char **, int, char **); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5573 |
+void trill_area_init(struct isis_area *); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5574 |
+void trill_area_free(struct isis_area *); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5575 |
+void trill_get_area_nickinfo(struct isis_area *, struct trill_nickname *); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5576 |
+void trill_nickdb_print (struct vty *, struct isis_area *); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5577 |
+void trill_nick_destroy(struct isis_lsp *); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5578 |
+void trill_lspdb_acquire_event(struct isis_circuit *, lspdbacq_state); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5579 |
+int trill_area_nickname(struct isis_area *, u_int16_t); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5580 |
+void trill_parse_router_capability_tlvs (struct isis_area *, struct isis_lsp *); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5581 |
+void trill_process_spf (struct isis_area *); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5582 |
+void trill_process_hello(struct isis_adjacency *, struct list *); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5583 |
+void send_trill_vlan_hellos(struct isis_circuit *); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5584 |
+void trill_circuits_print_all (struct vty *, struct isis_area *); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5585 |
+u_char *nick_to_sysid(struct isis_area *, u_int16_t); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5586 |
+u_int16_t sysid_to_nick(struct isis_area *, u_char *); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5587 |
+void trill_create_vlanfilterlist(struct isis_area *, nicknode_t *); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5588 |
+nicknode_t * trill_nicknode_lookup(struct isis_area *, uint16_t); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5589 |
+void install_trill_elements (void); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5590 |
+void install_trill_vlan_elements (void); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5591 |
+int trill_process_bpdu (struct isis_circuit *, u_char *); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5592 |
+int trill_send_bpdu (struct isis_circuit *circuit, const void *, size_t); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5593 |
+void trill_send_tc_bpdus (struct isis_circuit *); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5594 |
+void trill_set_vlan_forwarder (struct isis_circuit *, u_int8_t *); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5595 |
+void trill_port_flush (struct isis_circuit *, u_int16_t); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5596 |
+void trill_nick_flush (struct isis_circuit *, u_int16_t); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5597 |
+void trill_inhib_all(struct isis_circuit *); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5598 |
+char trill_reload(void); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5599 |
+#endif |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5600 |
diff --git isisd/isis_trillbpdu.c isisd/isis_trillbpdu.c |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5601 |
new file mode 100644 |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5602 |
index 0000000..2352cfc |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5603 |
--- /dev/null |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5604 |
+++ isisd/isis_trillbpdu.c |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5605 |
@@ -0,0 +1,202 @@ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5606 |
+/* |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5607 |
+ * TRILL BPDU handling - isis_trillbpdu.c |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5608 |
+ * |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5609 |
+ * Copyright (c) 2009, 2011, Oracle and/or its affiliates. All rights reserved. |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5610 |
+ * |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5611 |
+ * This program is free software; you can redistribute it and/or modify it |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5612 |
+ * under the terms of the GNU General Public Licenseas published by the Free |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5613 |
+ * Software Foundation; either version 2 of the License, or (at your option) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5614 |
+ * any later version. |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5615 |
+ * |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5616 |
+ * This program is distributed in the hope that it will be useful,but WITHOUT |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5617 |
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5618 |
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5619 |
+ * more details. |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5620 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5621 |
+ * You should have received a copy of the GNU General Public License along |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5622 |
+ * with this program; if not, write to the Free Software Foundation, Inc., |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5623 |
+ * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5624 |
+ */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5625 |
+#include <zebra.h> |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5626 |
+#include <time.h> |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5627 |
+#include "log.h" |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5628 |
+#include "if.h" |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5629 |
+#include "stream.h" |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5630 |
+#include "vty.h" |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5631 |
+#include "dict.h" |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5632 |
+#include "isis_common.h" |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5633 |
+#include "isis_constants.h" |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5634 |
+#include "isis_circuit.h" |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5635 |
+#include "isis_tlv.h" |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5636 |
+#include "isis_flags.h" |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5637 |
+#include "isis_vlans.h" |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5638 |
+#include "isis_lsp.h" |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5639 |
+#include "isis_trill.h" |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5640 |
+#include "isisd.h" |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5641 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5642 |
+/* |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5643 |
+ * This module supports just the bare minimum of Bridge PDU handling necessary |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5644 |
+ * for normal TRILL interaction with standard bridges. It does not include |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5645 |
+ * spanning tree or other BPDU functions. |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5646 |
+ */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5647 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5648 |
+struct common_bpdu |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5649 |
+{ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5650 |
+ u_int16_t cmb_protid; /* Protocol Identifier */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5651 |
+ u_int8_t cmb_protvers; /* Protocol Version Identifier */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5652 |
+ u_int8_t cmb_type; /* BPDU Type */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5653 |
+}; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5654 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5655 |
+#ifdef __SUNPRO_C |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5656 |
+#pragma pack(1) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5657 |
+#endif |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5658 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5659 |
+struct conf_bpdu |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5660 |
+{ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5661 |
+ struct common_bpdu cb_cmb; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5662 |
+ u_int8_t cb_flags; /* BPDU Flags */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5663 |
+ u_int8_t cb_rootid[8]; /* Root Identifier */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5664 |
+ u_int8_t cb_unused[14]; /* Root Path Cost, Bridge ID, Port ID */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5665 |
+ u_int16_t cb_messageage; /* Message Age */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5666 |
+ u_int16_t cb_maxage; /* Max Age */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5667 |
+ u_int16_t cb_hello; /* Hello Time */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5668 |
+ u_int16_t cb_unused2; /* Forward Delay */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5669 |
+} __attribute__ ((packed)); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5670 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5671 |
+#ifdef __SUNPRO_C |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5672 |
+#pragma pack() |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5673 |
+#endif |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5674 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5675 |
+#define BPDU_PROTID 0 /* Standard STP and RSTP */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5676 |
+#define BPDU_PROTVERS_STP 0 /* STP */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5677 |
+#define BPDU_PROTVERS_RSTP 2 /* RSTP */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5678 |
+#define BPDU_FLAGS_TC_ACK 0x80 |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5679 |
+#define BPDU_FLAGS_TC 1 |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5680 |
+#define BPDU_TYPE_CONF 0 |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5681 |
+#define BPDU_TYPE_RCONF 2 |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5682 |
+#define BPDU_TYPE_TCNOTIF 0x80 |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5683 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5684 |
+int |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5685 |
+trill_process_bpdu (struct isis_circuit *circuit, u_char *srcaddr) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5686 |
+{ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5687 |
+ size_t bpdulen; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5688 |
+ struct conf_bpdu cb; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5689 |
+ time_t now; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5690 |
+ int brcmp; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5691 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5692 |
+ /* |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5693 |
+ * Standard BPDU validation first. Unrecognized things are just returned |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5694 |
+ * silently. Bad things (protocol violations) generate warnings. |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5695 |
+ */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5696 |
+ bpdulen = stream_get_endp (circuit->rcv_stream); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5697 |
+ if (bpdulen < sizeof (cb.cb_cmb)) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5698 |
+ return ISIS_WARNING; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5699 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5700 |
+ stream_get (&cb.cb_cmb, circuit->rcv_stream, sizeof (cb.cb_cmb)); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5701 |
+ if (ntohs(cb.cb_cmb.cmb_protid) != BPDU_PROTID) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5702 |
+ return ISIS_OK; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5703 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5704 |
+ switch (cb.cb_cmb.cmb_type) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5705 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5706 |
+ case BPDU_TYPE_CONF: |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5707 |
+ if (bpdulen < sizeof (cb)) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5708 |
+ return ISIS_WARNING; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5709 |
+ stream_get (&cb.cb_cmb + 1, circuit->rcv_stream, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5710 |
+ sizeof (cb) - sizeof (cb.cb_cmb)); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5711 |
+ if (ntohs(cb.cb_messageage) >= ntohs(cb.cb_maxage)) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5712 |
+ return ISIS_WARNING; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5713 |
+ /* |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5714 |
+ * We don't send Configuration BPDUs, so no need to check Bridge & Port |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5715 |
+ * ID values. |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5716 |
+ */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5717 |
+ break; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5718 |
+ case BPDU_TYPE_RCONF: |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5719 |
+ if (bpdulen < sizeof (cb) + 1) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5720 |
+ return ISIS_WARNING; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5721 |
+ stream_get (&cb.cb_cmb + 1, circuit->rcv_stream, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5722 |
+ sizeof (cb) - sizeof (cb.cb_cmb)); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5723 |
+ break; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5724 |
+ case BPDU_TYPE_TCNOTIF: |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5725 |
+ return ISIS_OK; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5726 |
+ default: |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5727 |
+ return ISIS_WARNING; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5728 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5729 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5730 |
+ brcmp = memcmp (cb.cb_rootid, circuit->root_bridge, sizeof (cb.cb_rootid)); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5731 |
+ now = time (NULL); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5732 |
+ if (circuit->root_expire == 0 || now - circuit->root_expire > 0 || brcmp <= 0) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5733 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5734 |
+ int hellot; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5735 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5736 |
+ hellot = ntohs(cb.cb_hello) / 256; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5737 |
+ if (hellot < 1) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5738 |
+ hellot = 1; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5739 |
+ else if (hellot > 10) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5740 |
+ hellot = 10; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5741 |
+ circuit->root_expire = now + 3 * hellot; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5742 |
+ memcpy(circuit->root_bridge, cb.cb_rootid, sizeof (cb.cb_rootid)); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5743 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5744 |
+ /* If root bridge change, then inhibit for a while */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5745 |
+ if (brcmp != 0) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5746 |
+ trill_inhib_all (circuit); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5747 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5748 |
+ /* |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5749 |
+ * If we've gotten a Topology Change Ack from the root bridge, then we |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5750 |
+ * need not send any more TC notifications. |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5751 |
+ */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5752 |
+ if ((cb.cb_flags & BPDU_FLAGS_TC) && circuit->tc_count != 0) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5753 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5754 |
+ thread_cancel (circuit->tc_thread); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5755 |
+ circuit->tc_thread = NULL; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5756 |
+ circuit->tc_count = 0; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5757 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5758 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5759 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5760 |
+ return ISIS_OK; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5761 |
+} |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5762 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5763 |
+/* |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5764 |
+ * Handle TC notification expiry: send another TC BPDU, up to a hard-coded |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5765 |
+ * limit. |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5766 |
+ */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5767 |
+static int |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5768 |
+trill_send_tc (struct thread *thread) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5769 |
+{ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5770 |
+ struct isis_circuit *circuit; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5771 |
+ struct common_bpdu cmb; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5772 |
+ int retv; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5773 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5774 |
+ circuit = THREAD_ARG (thread); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5775 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5776 |
+ cmb.cmb_protid = htons (BPDU_PROTID); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5777 |
+ cmb.cmb_protvers = BPDU_PROTVERS_STP; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5778 |
+ cmb.cmb_type = BPDU_TYPE_TCNOTIF; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5779 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5780 |
+ retv = trill_send_bpdu (circuit, &cmb, sizeof (cmb)); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5781 |
+ if (retv != ISIS_OK) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5782 |
+ zlog_warn ("TRILL unable to send TC BPDU on %s", circuit->interface->name); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5783 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5784 |
+ if (++circuit->tc_count <= 5) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5785 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5786 |
+ circuit->tc_thread = thread_add_timer (master, trill_send_tc, circuit, 1); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5787 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5788 |
+ else |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5789 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5790 |
+ circuit->tc_thread = NULL; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5791 |
+ circuit->tc_count = 0; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5792 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5793 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5794 |
+ return retv; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5795 |
+} |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5796 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5797 |
+/* |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5798 |
+ * Begin sending TC notification BPDUs on this circuit. Transmissions are sent |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5799 |
+ * once a second until either 5 have been sent, or we receive a TC Ack from the |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5800 |
+ * root bridge. |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5801 |
+ */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5802 |
+void |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5803 |
+trill_send_tc_bpdus (struct isis_circuit *circuit) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5804 |
+{ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5805 |
+ circuit->tc_count = 1; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5806 |
+ THREAD_TIMER_ON (master, circuit->tc_thread, trill_send_tc, circuit, 1); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5807 |
+} |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5808 |
diff --git isisd/isis_trilldummy.c isisd/isis_trilldummy.c |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5809 |
new file mode 100644 |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5810 |
index 0000000..edaeec3 |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5811 |
--- /dev/null |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5812 |
+++ isisd/isis_trilldummy.c |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5813 |
@@ -0,0 +1,54 @@ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5814 |
+/* |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5815 |
+ * IS-IS Rout(e)ing protocol - isis_trilldummy.c |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5816 |
+ * |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5817 |
+ * This program is free software; you can redistribute it and/or modify it |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5818 |
+ * under the terms of the GNU General Public Licenseas published by the Free |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5819 |
+ * Software Foundation; either version 2 of the License, or (at your option) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5820 |
+ * any later version. |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5821 |
+ * |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5822 |
+ * This program is distributed in the hope that it will be useful,but WITHOUT |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5823 |
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5824 |
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5825 |
+ * more details. |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5826 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5827 |
+ * You should have received a copy of the GNU General Public License along |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5828 |
+ * with this program; if not, write to the Free Software Foundation, Inc., |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5829 |
+ * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5830 |
+ */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5831 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5832 |
+#include <zebra.h> |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5833 |
+#include <vty.h> |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5834 |
+#include <if.h> |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5835 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5836 |
+#include "dict.h" |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5837 |
+#include "bool.h" |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5838 |
+#include "isis_constants.h" |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5839 |
+#include "isis_common.h" |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5840 |
+#include "isis_flags.h" |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5841 |
+#include "isisd.h" |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5842 |
+#include "isis_adjacency.h" |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5843 |
+#include "isis_circuit.h" |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5844 |
+#include "isis_tlv.h" |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5845 |
+#include "isis_lsp.h" |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5846 |
+#include "isis_vlans.h" |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5847 |
+#include "isis_trill.h" |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5848 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5849 |
+void trill_read_config (char **cfilep, int argc, char **argv) { } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5850 |
+void trill_process_hello(struct isis_adjacency *adj, struct list *portcaps) { } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5851 |
+void trill_nickdb_print (struct vty *vty, struct isis_area *area) { } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5852 |
+void trill_lspdb_acquire_event(struct isis_circuit *circuit, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5853 |
+ lspdbacq_state caller) { } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5854 |
+void trill_nick_destroy(struct isis_lsp *lsp) { } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5855 |
+void send_trill_vlan_hellos(struct isis_circuit *circuit) { } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5856 |
+void trill_area_init(struct isis_area *area) { } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5857 |
+void trill_area_free(struct isis_area *area) { } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5858 |
+void trill_parse_router_capability_tlvs (struct isis_area *area, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5859 |
+ struct isis_lsp *lsp) { } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5860 |
+void trill_process_spf (struct isis_area *area) { } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5861 |
+int tlv_add_trill_nickname(struct trill_nickname *nick_info, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5862 |
+ struct stream *stream, struct isis_area *area) { return ISIS_OK; } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5863 |
+int tlv_add_trill_vlans(struct isis_circuit *circuit) { return ISIS_OK; } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5864 |
+void install_trill_elements (void) { } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5865 |
+void install_trill_vlan_elements (void) { } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5866 |
+int trill_process_bpdu (struct isis_circuit *c, u_char *sa) { return ISIS_OK; } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5867 |
+char trill_reload(void) { return FALSE; } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5868 |
diff --git isisd/isis_trillio.c isisd/isis_trillio.c |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5869 |
new file mode 100644 |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5870 |
index 0000000..858ba1e |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5871 |
--- /dev/null |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5872 |
+++ isisd/isis_trillio.c |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5873 |
@@ -0,0 +1,301 @@ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5874 |
+/* |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5875 |
+ * IS-IS Rout(e)ing protocol - isis_trillio.c |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5876 |
+ * |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5877 |
+ * Copyright (C) 2001,2002 Sampo Saaristo |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5878 |
+ * Tampere University of Technology |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5879 |
+ * Institute of Communications Engineering |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5880 |
+ * |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5881 |
+ * Copyright (c) 2009, 2011, Oracle and/or its affiliates. All rights reserved. |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5882 |
+ * |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5883 |
+ * This program is free software; you can redistribute it and/or modify it |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5884 |
+ * under the terms of the GNU General Public Licenseas published by the Free |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5885 |
+ * Software Foundation; either version 2 of the License, or (at your option) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5886 |
+ * any later version. |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5887 |
+ * |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5888 |
+ * This program is distributed in the hope that it will be useful,but WITHOUT |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5889 |
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5890 |
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5891 |
+ * more details. |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5892 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5893 |
+ * You should have received a copy of the GNU General Public License along |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5894 |
+ * with this program; if not, write to the Free Software Foundation, Inc., |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5895 |
+ * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5896 |
+ */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5897 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5898 |
+#include <zebra.h> |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5899 |
+#include <net/if_dl.h> |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5900 |
+#include <sys/socket.h> |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5901 |
+#include <sys/stropts.h> |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5902 |
+#include <sys/ethernet.h> |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5903 |
+#include <net/trill.h> |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5904 |
+#include <net/bridge.h> |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5905 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5906 |
+#include "log.h" |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5907 |
+#include "stream.h" |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5908 |
+#include "network.h" |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5909 |
+#include "if.h" |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5910 |
+#include "vty.h" |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5911 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5912 |
+#include "isisd/dict.h" |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5913 |
+#include "isisd/include-netbsd/iso.h" |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5914 |
+#include "isisd/isis_constants.h" |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5915 |
+#include "isisd/isis_common.h" |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5916 |
+#include "isisd/isis_circuit.h" |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5917 |
+#include "isisd/isis_flags.h" |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5918 |
+#include "isisd/isisd.h" |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5919 |
+#include "isisd/isis_constants.h" |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5920 |
+#include "isisd/isis_circuit.h" |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5921 |
+#include "isisd/isis_network.h" |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5922 |
+#include "isisd/isis_tlv.h" |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5923 |
+#include "isisd/isis_lsp.h" |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5924 |
+#include "isisd/isis_vlans.h" |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5925 |
+#include "isisd/isis_trill.h" |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5926 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5927 |
+#include "privs.h" |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5928 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5929 |
+extern struct zebra_privs_t isisd_privs; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5930 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5931 |
+static u_char sock_buff[32000]; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5932 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5933 |
+static const uint8_t all_isis_rbridges[] = ALL_ISIS_RBRIDGES; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5934 |
+static const uint8_t bridge_group_address[] = BRIDGE_GROUP_ADDRESS; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5935 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5936 |
+static int |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5937 |
+open_trill_socket (struct isis_circuit *circuit) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5938 |
+{ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5939 |
+ struct sockaddr_dl laddr; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5940 |
+ int fd; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5941 |
+ unsigned int mtu; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5942 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5943 |
+ circuit->fd = -1; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5944 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5945 |
+ fd = socket (PF_TRILL, SOCK_DGRAM, 0); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5946 |
+ if (fd < 0) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5947 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5948 |
+ zlog_warn ("open_trill_socket(): socket() failed %s", |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5949 |
+ safe_strerror (errno)); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5950 |
+ return ISIS_ERROR; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5951 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5952 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5953 |
+ if (set_nonblocking (fd) < 0) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5954 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5955 |
+ zlog_warn ("open_trill_socket(): set_nonblocking() failed: %s", |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5956 |
+ safe_strerror (errno)); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5957 |
+ close (fd); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5958 |
+ return ISIS_ERROR; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5959 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5960 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5961 |
+ if (ioctl (fd, TRILL_NEWBRIDGE, &circuit->area->trill->name) < 0) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5962 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5963 |
+ zlog_warn ("open_trill_socket(): TRILL_NEWBRIDGE ioctl failed: %s", |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5964 |
+ safe_strerror (errno)); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5965 |
+ close (fd); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5966 |
+ return ISIS_ERROR; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5967 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5968 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5969 |
+ /* |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5970 |
+ * Bind to the physical interface that must be one of the |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5971 |
+ * links in the bridge instance. |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5972 |
+ */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5973 |
+ memset (&laddr, 0, sizeof (struct sockaddr_dl)); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5974 |
+ laddr.sdl_family = AF_TRILL; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5975 |
+ laddr.sdl_nlen = sizeof (datalink_id_t); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5976 |
+ *(datalink_id_t *)laddr.sdl_data = circuit->interface->ifindex; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5977 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5978 |
+ if (bind (fd, (struct sockaddr *) (&laddr), sizeof (struct sockaddr_dl)) < 0) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5979 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5980 |
+ zlog_warn ("open_trill_socket(): bind() failed: %s", |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5981 |
+ safe_strerror (errno)); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5982 |
+ close (fd); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5983 |
+ return ISIS_ERROR; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5984 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5985 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5986 |
+ if (ioctl (fd, TRILL_HWADDR, &circuit->u.bc.snpa) < 0) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5987 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5988 |
+ zlog_warn ("open_trill_socket(): TRILL_HWADDR ioctl failed: %s", |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5989 |
+ safe_strerror (errno)); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5990 |
+ close (fd); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5991 |
+ return ISIS_ERROR; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5992 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5993 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5994 |
+ if (ioctl (fd, TRILL_GETMTU, &mtu) < 0) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5995 |
+ zlog_warn ("open_trill_socket(): TRILL_GETMTU ioctl failed: %s", |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5996 |
+ safe_strerror (errno)); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5997 |
+ else |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5998 |
+ circuit->interface->mtu = mtu; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
5999 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6000 |
+ if (mtu > sizeof (sock_buff)) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6001 |
+ zlog_err ("open_trill_socket(): interface mtu:%d is greater than " |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6002 |
+ " sock_buff size:%d", mtu, sizeof (sock_buff)); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6003 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6004 |
+ circuit->fd = fd; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6005 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6006 |
+ return ISIS_OK; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6007 |
+} |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6008 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6009 |
+/* |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6010 |
+ * Create the socket and set the tx/rx funcs |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6011 |
+ */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6012 |
+int |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6013 |
+isis_sock_init (struct isis_circuit *circuit) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6014 |
+{ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6015 |
+ int retval; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6016 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6017 |
+ if (isisd_privs.change (ZPRIVS_RAISE)) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6018 |
+ zlog_err ("%s: could not raise privs, %s", __func__, safe_strerror (errno)); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6019 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6020 |
+ circuit->tx = isis_send_pdu_bcast; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6021 |
+ circuit->rx = isis_recv_pdu_bcast; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6022 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6023 |
+ retval = open_trill_socket (circuit); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6024 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6025 |
+ if (retval != ISIS_OK) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6026 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6027 |
+ zlog_warn ("%s: could not initialize the socket", __func__); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6028 |
+ goto end; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6029 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6030 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6031 |
+ if (circuit->circ_type == CIRCUIT_T_P2P) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6032 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6033 |
+ retval = ISIS_ERROR; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6034 |
+ zlog_err ("%s: do not support P2P link ", __func__); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6035 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6036 |
+ else if (circuit->circ_type != CIRCUIT_T_BROADCAST) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6037 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6038 |
+ zlog_warn ("%s: unknown circuit type", __func__); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6039 |
+ retval = ISIS_WARNING; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6040 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6041 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6042 |
+end: |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6043 |
+ if (isisd_privs.change (ZPRIVS_LOWER)) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6044 |
+ zlog_err ("%s: could not lower privs, %s", __func__, safe_strerror (errno)); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6045 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6046 |
+ return retval; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6047 |
+} |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6048 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6049 |
+int |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6050 |
+isis_recv_pdu_bcast (struct isis_circuit *circuit, u_char * ssnpa) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6051 |
+{ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6052 |
+ int bytesread, addr_len; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6053 |
+ struct sockaddr_dl laddr; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6054 |
+ char *llsaddr; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6055 |
+ uint16_t tci; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6056 |
+ uint8_t sap; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6057 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6058 |
+ if (circuit->fd == -1) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6059 |
+ return ISIS_ERROR; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6060 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6061 |
+ /* we have to read to the static buff first */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6062 |
+ addr_len = sizeof (struct sockaddr_dl); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6063 |
+ bytesread = recvfrom (circuit->fd, sock_buff, sizeof (sock_buff), |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6064 |
+ MSG_DONTWAIT, (struct sockaddr *) &laddr, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6065 |
+ (socklen_t *) &addr_len); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6066 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6067 |
+ if (bytesread < 0 && errno == EWOULDBLOCK) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6068 |
+ return ISIS_WARNING; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6069 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6070 |
+ if (laddr.sdl_slen != sizeof (tci) || laddr.sdl_alen != ETHERADDRL) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6071 |
+ return ISIS_ERROR; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6072 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6073 |
+ if (bytesread < LLC_LEN) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6074 |
+ return ISIS_WARNING; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6075 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6076 |
+ llsaddr = LLADDR(&laddr); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6077 |
+ memcpy (ssnpa, llsaddr, laddr.sdl_alen); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6078 |
+ tci = *(uint16_t *)(llsaddr + laddr.sdl_alen); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6079 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6080 |
+ sap = tci == TRILL_TCI_BPDU ? ISO_BPDU : ISO_SAP; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6081 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6082 |
+ if (sock_buff[0] != sap || sock_buff[1] != sap || sock_buff[2] != 0x03) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6083 |
+ return ISIS_WARNING; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6084 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6085 |
+ circuit->vlans->rx_tci = tci; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6086 |
+ stream_write (circuit->rcv_stream, sock_buff + LLC_LEN, bytesread - LLC_LEN); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6087 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6088 |
+ return ISIS_OK; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6089 |
+} |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6090 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6091 |
+int |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6092 |
+isis_send_pdu_bcast (struct isis_circuit *circuit, int level) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6093 |
+{ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6094 |
+ ssize_t written; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6095 |
+ size_t msglen; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6096 |
+ struct sockaddr_dl laddr; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6097 |
+ char *dp; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6098 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6099 |
+ if (circuit->fd == -1) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6100 |
+ return ISIS_ERROR; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6101 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6102 |
+ stream_set_getp (circuit->snd_stream, 0); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6103 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6104 |
+ laddr.sdl_family = AF_TRILL; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6105 |
+ dp = laddr.sdl_data; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6106 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6107 |
+ laddr.sdl_nlen = sizeof (datalink_id_t); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6108 |
+ memcpy (dp, &circuit->interface->ifindex, sizeof (datalink_id_t)); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6109 |
+ dp += laddr.sdl_nlen; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6110 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6111 |
+ laddr.sdl_alen = ETHERADDRL; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6112 |
+ memcpy (dp, all_isis_rbridges, laddr.sdl_alen); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6113 |
+ dp += laddr.sdl_alen; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6114 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6115 |
+ laddr.sdl_slen = sizeof (circuit->vlans->tx_tci); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6116 |
+ memcpy (dp, &circuit->vlans->tx_tci, laddr.sdl_slen); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6117 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6118 |
+ /* now set up the data in the buffer */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6119 |
+ sock_buff[0] = ISO_SAP; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6120 |
+ sock_buff[1] = ISO_SAP; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6121 |
+ sock_buff[2] = 0x03; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6122 |
+ msglen = stream_get_endp (circuit->snd_stream); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6123 |
+ if (msglen + LLC_LEN > sizeof (sock_buff)) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6124 |
+ return ISIS_WARNING; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6125 |
+ stream_get (sock_buff + LLC_LEN, circuit->snd_stream, msglen); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6126 |
+ msglen += LLC_LEN; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6127 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6128 |
+ /* now we can send this */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6129 |
+ written = sendto (circuit->fd, sock_buff, msglen, 0, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6130 |
+ (struct sockaddr *) &laddr, sizeof (struct sockaddr_dl)); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6131 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6132 |
+ if (written != (ssize_t)msglen) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6133 |
+ return ISIS_WARNING; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6134 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6135 |
+ return ISIS_OK; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6136 |
+} |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6137 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6138 |
+int |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6139 |
+trill_send_bpdu (struct isis_circuit *circuit, const void *msg, size_t msglen) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6140 |
+{ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6141 |
+ ssize_t written; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6142 |
+ struct sockaddr_dl laddr; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6143 |
+ char *dp; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6144 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6145 |
+ if (circuit->fd == -1) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6146 |
+ return ISIS_ERROR; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6147 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6148 |
+ /* add in the LLC header */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6149 |
+ sock_buff[0] = ISO_BPDU; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6150 |
+ sock_buff[1] = ISO_BPDU; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6151 |
+ sock_buff[2] = 0x03; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6152 |
+ memcpy (sock_buff + 3, msg, msglen); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6153 |
+ msglen += 3; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6154 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6155 |
+ laddr.sdl_family = AF_TRILL; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6156 |
+ dp = laddr.sdl_data; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6157 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6158 |
+ laddr.sdl_nlen = sizeof (datalink_id_t); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6159 |
+ memcpy (dp, &circuit->interface->ifindex, sizeof (datalink_id_t)); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6160 |
+ dp += laddr.sdl_nlen; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6161 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6162 |
+ laddr.sdl_alen = ETHERADDRL; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6163 |
+ memcpy (dp, bridge_group_address, laddr.sdl_alen); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6164 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6165 |
+ laddr.sdl_slen = 0; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6166 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6167 |
+ written = sendto (circuit->fd, sock_buff, msglen, 0, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6168 |
+ (struct sockaddr *) &laddr, sizeof (struct sockaddr_dl)); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6169 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6170 |
+ if (written != (ssize_t)msglen) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6171 |
+ return ISIS_WARNING; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6172 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6173 |
+ return ISIS_OK; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6174 |
+} |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6175 |
diff --git isisd/isis_trillvlans.c isisd/isis_trillvlans.c |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6176 |
new file mode 100644 |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6177 |
index 0000000..2f66c16 |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6178 |
--- /dev/null |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6179 |
+++ isisd/isis_trillvlans.c |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6180 |
@@ -0,0 +1,1207 @@ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6181 |
+/* |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6182 |
+ * IS-IS Rout(e)ing protocol - isis_trillvlans.c |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6183 |
+ * |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6184 |
+ * Copyright (c) 2009, 2011, Oracle and/or its affiliates. All rights reserved. |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6185 |
+ * |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6186 |
+ * This program is free software; you can redistribute it and/or modify it |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6187 |
+ * under the terms of the GNU General Public Licenseas published by the Free |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6188 |
+ * Software Foundation; either version 2 of the License, or (at your option) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6189 |
+ * any later version. |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6190 |
+ * |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6191 |
+ * This program is distributed in the hope that it will be useful,but WITHOUT |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6192 |
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6193 |
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6194 |
+ * more details. |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6195 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6196 |
+ * You should have received a copy of the GNU General Public License along |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6197 |
+ * with this program; if not, write to the Free Software Foundation, Inc., |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6198 |
+ * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6199 |
+ */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6200 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6201 |
+#include <zebra.h> |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6202 |
+#include <command.h> |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6203 |
+#include <net/trill.h> |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6204 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6205 |
+#include "linklist.h" |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6206 |
+#include "vty.h" |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6207 |
+#include "dict.h" |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6208 |
+#include "memory.h" |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6209 |
+#include "log.h" |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6210 |
+#include "if.h" |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6211 |
+#include "prefix.h" |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6212 |
+#include "jhash.h" |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6213 |
+#include "stream.h" |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6214 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6215 |
+#include "isisd/isis_common.h" |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6216 |
+#include "isisd/isis_constants.h" |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6217 |
+#include "isisd/isis_circuit.h" |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6218 |
+#include "isisd/isis_flags.h" |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6219 |
+#include "isisd/isis_tlv.h" |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6220 |
+#include "isisd/isis_lsp.h" |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6221 |
+#include "isisd/isis_vlans.h" |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6222 |
+#include "isisd/isis_trill.h" |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6223 |
+#include "isisd/isisd.h" |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6224 |
+#include "isisd/isis_pdu.h" |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6225 |
+#include "isisd/bool.h" |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6226 |
+#include "isisd/isis_misc.h" |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6227 |
+#include "isisd/isis_spf.h" |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6228 |
+#include "isisd/isis_adjacency.h" |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6229 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6230 |
+static int |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6231 |
+compute_vlan_ranges(uint8_t *vlans, int *vlan, int *start, int *end) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6232 |
+{ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6233 |
+ int vlan_set; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6234 |
+ int vlan_start = 0; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6235 |
+ int prev_vlan = 0; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6236 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6237 |
+ EACH_VLAN_R(vlans, *vlan, vlan_set) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6238 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6239 |
+ if (vlan_start != 0) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6240 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6241 |
+ if (vlan_set) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6242 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6243 |
+ prev_vlan++; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6244 |
+ assert (prev_vlan == (*vlan)); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6245 |
+ continue; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6246 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6247 |
+ *start = vlan_start; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6248 |
+ *end = prev_vlan; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6249 |
+ return TRUE; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6250 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6251 |
+ if (!vlan_set) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6252 |
+ continue; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6253 |
+ vlan_start = *vlan; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6254 |
+ prev_vlan = *vlan; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6255 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6256 |
+ return FALSE; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6257 |
+} |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6258 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6259 |
+static void |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6260 |
+trill_del_enabled_vlans_listnode(void *data) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6261 |
+{ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6262 |
+ XFREE(MTYPE_ISIS_TRILL_ENABLEDVLANS, data); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6263 |
+} |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6264 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6265 |
+static void |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6266 |
+trill_compute_enabled_vlans_subtlv(struct isis_circuit *circuit) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6267 |
+{ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6268 |
+ unsigned int bytenum; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6269 |
+ int span = 0; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6270 |
+ int endspan = 0; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6271 |
+ int size; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6272 |
+ uint8_t byte; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6273 |
+ uint8_t *byteptr; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6274 |
+ unsigned int foundstartvlan = FALSE; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6275 |
+ struct list *tlvdatalist; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6276 |
+ struct trill_enabled_vlans_listnode *data; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6277 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6278 |
+ tlvdatalist = list_new(); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6279 |
+ tlvdatalist->del = trill_del_enabled_vlans_listnode; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6280 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6281 |
+ for (bytenum=0; bytenum < VLANS_ARRSIZE; bytenum++) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6282 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6283 |
+ byte = circuit->vlans->enabled[bytenum]; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6284 |
+ if (byte == 0) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6285 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6286 |
+ if (!foundstartvlan) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6287 |
+ continue; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6288 |
+ /* Check for large span, efficient to use a new sub-TLV */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6289 |
+ if (bytenum != (VLANS_ARRSIZE-1) && ((bytenum - endspan) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6290 |
+ <= (TLFLDS_LEN + sizeof (struct trill_enabledvlans_subtlv)))) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6291 |
+ continue; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6292 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6293 |
+ else if (!foundstartvlan) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6294 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6295 |
+ foundstartvlan = TRUE; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6296 |
+ span = endspan = bytenum; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6297 |
+ /* continue checking until we reach end of vlan bit array */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6298 |
+ if (bytenum != (VLANS_ARRSIZE-1)) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6299 |
+ continue; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6300 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6301 |
+ else |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6302 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6303 |
+ assert(foundstartvlan); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6304 |
+ endspan = bytenum; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6305 |
+ /* span shouldn't exceed max subtlv length */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6306 |
+ if (bytenum != (VLANS_ARRSIZE-1) && (endspan - span) < MAX_VLANS_SUBTLV_LEN) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6307 |
+ continue; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6308 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6309 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6310 |
+ assert(foundstartvlan); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6311 |
+ assert(endspan >= span); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6312 |
+ size = sizeof(struct trill_enabled_vlans_listnode) + endspan - span + 1; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6313 |
+ data = XMALLOC(MTYPE_ISIS_TRILL_ENABLEDVLANS, size); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6314 |
+ data->len = size - sizeof(data->len); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6315 |
+ data->tlvdata.start_vlan = htons(span*NBBY); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6316 |
+ byteptr = (uint8_t *)&data[1]; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6317 |
+ while (endspan - span >= 0) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6318 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6319 |
+ assert(byteptr <= (((uint8_t *)data) + size)); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6320 |
+ *byteptr = REVERSE_BYTE(circuit->vlans->enabled[span]); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6321 |
+ span++; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6322 |
+ byteptr++; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6323 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6324 |
+ listnode_add(tlvdatalist, data); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6325 |
+ foundstartvlan = FALSE; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6326 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6327 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6328 |
+ if (listcount(tlvdatalist) > 0) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6329 |
+ circuit->vlans->enabled_vlans = tlvdatalist; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6330 |
+ else |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6331 |
+ list_delete(tlvdatalist); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6332 |
+} |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6333 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6334 |
+static void |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6335 |
+trill_del_appvlanfwders_listnode(void *data) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6336 |
+{ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6337 |
+ XFREE(MTYPE_ISIS_TRILL_VLANFWDERS, data); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6338 |
+} |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6339 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6340 |
+static int |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6341 |
+trill_cmp_appvlanfwders(void *data1, void *data2) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6342 |
+{ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6343 |
+ int vlan1; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6344 |
+ int vlan2; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6345 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6346 |
+ vlan1 = ntohs(((struct appointed_vlanfwder_subtlv *)data1)->vlan_start); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6347 |
+ vlan2 = ntohs(((struct appointed_vlanfwder_subtlv *)data2)->vlan_start); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6348 |
+ return (vlan1 < vlan2 ? -1:(vlan1 == vlan2 ? 0:1)); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6349 |
+} |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6350 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6351 |
+static void |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6352 |
+trill_add_vlanfwder(struct isis_circuit *circuit, int start, int end, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6353 |
+ int nick, u_int32_t *hash) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6354 |
+{ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6355 |
+ struct appointed_vlanfwder_subtlv *vlanfwder; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6356 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6357 |
+ vlanfwder = XMALLOC (MTYPE_ISIS_TRILL_VLANFWDERS, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6358 |
+ sizeof (struct appointed_vlanfwder_subtlv)); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6359 |
+ vlanfwder->appointee_nick = nick; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6360 |
+ vlanfwder->vlan_start = htons(start); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6361 |
+ vlanfwder->vlan_end = htons(end); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6362 |
+ listnode_add_sort(circuit->vlans->appvlanfwders, vlanfwder); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6363 |
+ *hash = jhash(vlanfwder, sizeof (struct appointed_vlanfwder_subtlv), *hash); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6364 |
+} |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6365 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6366 |
+static void |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6367 |
+trill_compute_vlanfwders(struct isis_circuit *circuit, int *refresh) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6368 |
+{ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6369 |
+ int vlan = VLAN_MIN; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6370 |
+ int start; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6371 |
+ int end; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6372 |
+ int nick; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6373 |
+ struct isis_adjacency *adj; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6374 |
+ struct list *adjdb; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6375 |
+ struct listnode *node; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6376 |
+ struct listnode *nextnode; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6377 |
+ struct appointed_vlanfwder_subtlv *vlanfwder; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6378 |
+ struct appointed_vlanfwder_subtlv *prevvlanfwder; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6379 |
+ u_int32_t prevhash = circuit->vlans->vlanfwdershash; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6380 |
+ u_int32_t newhash = 0; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6381 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6382 |
+ if (circuit->vlans->appvlanfwders != NULL) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6383 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6384 |
+ list_delete(circuit->vlans->appvlanfwders); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6385 |
+ circuit->vlans->appvlanfwders = NULL; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6386 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6387 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6388 |
+ if (circuit->area->trill->nick.name == RBRIDGE_NICKNAME_NONE) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6389 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6390 |
+ *refresh = FALSE; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6391 |
+ return; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6392 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6393 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6394 |
+ circuit->vlans->appvlanfwders = list_new(); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6395 |
+ circuit->vlans->appvlanfwders->del = trill_del_appvlanfwders_listnode; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6396 |
+ circuit->vlans->appvlanfwders->cmp = trill_cmp_appvlanfwders; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6397 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6398 |
+ /* |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6399 |
+ * From the assigned VLAN forwarders among the adjacencies compute |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6400 |
+ * appointed VLAN forwarder sub-TLVs. We exclude VLANs assigned to |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6401 |
+ * ourself (the DR). |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6402 |
+ */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6403 |
+ adjdb = circuit->u.bc.adjdb[TRILL_ISIS_LEVEL - 1]; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6404 |
+ for (ALL_LIST_ELEMENTS_RO (adjdb, node, adj)) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6405 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6406 |
+ vlan = VLAN_MIN; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6407 |
+ while (compute_vlan_ranges(adj->vlans->forwarder, &vlan, &start, &end)) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6408 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6409 |
+ nick = sysid_to_nick(circuit->area, adj->sysid); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6410 |
+ if (nick != RBRIDGE_NICKNAME_NONE) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6411 |
+ trill_add_vlanfwder(circuit, start, end, nick, &newhash); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6412 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6413 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6414 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6415 |
+ circuit->vlans->vlanfwdershash = newhash; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6416 |
+ *refresh = (newhash == prevhash ? FALSE:TRUE); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6417 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6418 |
+ /* |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6419 |
+ * Compress the VLAN forwarder sub-TLVs by including missing VLANs in |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6420 |
+ * the ranges. We use the sorted appvlanfwders list to quickly determine |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6421 |
+ * the missing VLANs. |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6422 |
+ */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6423 |
+ nick = 0; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6424 |
+ prevvlanfwder = NULL; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6425 |
+ for (ALL_LIST_ELEMENTS(circuit->vlans->appvlanfwders, node, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6426 |
+ nextnode, vlanfwder)) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6427 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6428 |
+ if (nick != 0 && vlanfwder->appointee_nick == nick) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6429 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6430 |
+ prevvlanfwder->vlan_end = vlanfwder->vlan_end; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6431 |
+ trill_del_appvlanfwders_listnode(vlanfwder); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6432 |
+ list_delete_node(circuit->vlans->appvlanfwders, node); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6433 |
+ continue; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6434 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6435 |
+ nick = vlanfwder->appointee_nick; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6436 |
+ prevvlanfwder = vlanfwder; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6437 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6438 |
+} |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6439 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6440 |
+/* |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6441 |
+ * Clear all our info on VLAN forwarders. |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6442 |
+ */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6443 |
+static void |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6444 |
+trill_clear_vlanfwderinfo(struct isis_circuit *circuit) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6445 |
+{ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6446 |
+ struct listnode *node; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6447 |
+ struct isis_adjacency *adj; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6448 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6449 |
+ /* Clear existing VLAN forwarder information */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6450 |
+ memset (circuit->vlans->forwarder, 0, VLANS_ARRSIZE); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6451 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6452 |
+ for (ALL_LIST_ELEMENTS_RO(circuit->u.bc.adjdb[TRILL_ISIS_LEVEL-1], node, adj)) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6453 |
+ memset (adj->vlans->forwarder, 0, VLANS_ARRSIZE); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6454 |
+} |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6455 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6456 |
+/* |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6457 |
+ * TRILL function called when sending a hello frame on a TRILL circuit. |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6458 |
+ * Sends additional VLAN Hellos for TRILL based on VLANs we see Hellos on |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6459 |
+ * and from VLANs reported by other adjacencies. If we are DR then VLAN |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6460 |
+ * forwarders are also computed. |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6461 |
+ */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6462 |
+void |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6463 |
+send_trill_vlan_hellos(struct isis_circuit *circuit) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6464 |
+{ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6465 |
+ struct listnode *node; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6466 |
+ struct list *adjdb; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6467 |
+ struct isis_adjacency *adj; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6468 |
+ u_int8_t txvlans[VLANS_ARRSIZE]; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6469 |
+ u_int8_t fwdvlans[VLANS_ARRSIZE]; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6470 |
+ u_int vlan_set; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6471 |
+ int vlan; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6472 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6473 |
+ if (circuit->circ_type != CIRCUIT_T_BROADCAST) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6474 |
+ return; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6475 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6476 |
+ if (circuit->u.bc.is_dr[TRILL_ISIS_LEVEL - 1]) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6477 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6478 |
+ int refresh_lsp; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6479 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6480 |
+ /* Update circuit's designated VLAN */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6481 |
+ circuit->vlans->designated = circuit->vlans->our_designated; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6482 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6483 |
+ trill_clear_vlanfwderinfo(circuit); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6484 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6485 |
+ /* Appoint ourselves the VLAN forwarder for all our enabled VLANs */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6486 |
+ memcpy(circuit->vlans->forwarder, circuit->vlans->enabled, VLANS_ARRSIZE); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6487 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6488 |
+ /* Initialize the list of VLANs already assigned VLAN forwarder */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6489 |
+ memcpy(fwdvlans, circuit->vlans->enabled, VLANS_ARRSIZE); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6490 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6491 |
+ adjdb = circuit->u.bc.adjdb[TRILL_ISIS_LEVEL - 1]; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6492 |
+ for (ALL_LIST_ELEMENTS_RO (adjdb, node, adj)) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6493 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6494 |
+ /* |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6495 |
+ * If DR then appoint VLAN forwarder if no RBridge |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6496 |
+ * has been appointed yet to forward the particular VLAN. |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6497 |
+ */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6498 |
+ EACH_VLAN_SET(adj->vlans->enabled, vlan, vlan_set) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6499 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6500 |
+ if (CHECK_VLAN(fwdvlans, vlan)) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6501 |
+ continue; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6502 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6503 |
+ /* |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6504 |
+ * Delegate the VLAN forwarding to the adjacency |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6505 |
+ * as no other RBridge is forwarding the VLAN. |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6506 |
+ */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6507 |
+ SET_VLAN(adj->vlans->forwarder, vlan); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6508 |
+ SET_VLAN(fwdvlans, vlan); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6509 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6510 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6511 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6512 |
+ /* |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6513 |
+ * Based on the above VLAN forwarder appointments compute the VLAN |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6514 |
+ * forwarder TLVs. If VLAN forwarder info has changed then we also |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6515 |
+ * generate new LSPs. |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6516 |
+ */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6517 |
+ trill_compute_vlanfwders(circuit, &refresh_lsp); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6518 |
+ if (refresh_lsp) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6519 |
+ lsp_regenerate_schedule (circuit->area); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6520 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6521 |
+ /* DR sends hellos on all its enabled VLANs */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6522 |
+ memcpy(txvlans, circuit->vlans->enabled, VLANS_ARRSIZE); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6523 |
+ SET_VLAN(txvlans, circuit->vlans->designated); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6524 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6525 |
+ else |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6526 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6527 |
+ /* |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6528 |
+ * Non-DR sends hellos on designated VLAN (if enabled) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6529 |
+ * and on all VLANs it is the appointed forwarder. |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6530 |
+ */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6531 |
+ bzero(txvlans, VLANS_ARRSIZE); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6532 |
+ if (CHECK_VLAN(circuit->vlans->enabled, circuit->vlans->designated)) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6533 |
+ SET_VLAN(txvlans, circuit->vlans->designated); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6534 |
+ MERGE_VLANS(txvlans, vlan, circuit->vlans->forwarder); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6535 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6536 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6537 |
+ /* Send hellos */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6538 |
+ EACH_VLAN_SET(txvlans, vlan, vlan_set) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6539 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6540 |
+ circuit->vlans->tx_tci = vlan; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6541 |
+ send_hello(circuit, TRILL_ISIS_LEVEL); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6542 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6543 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6544 |
+ /* Re-set circuit to use the link's designated VLAN for all IS-IS frames */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6545 |
+ circuit->vlans->tx_tci = VLANTCI(circuit->vlans->designated); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6546 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6547 |
+ /* Compute enabled VLANs subtlvs (performed only once) */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6548 |
+ if (circuit->vlans->enabled_vlans == NULL) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6549 |
+ trill_compute_enabled_vlans_subtlv(circuit); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6550 |
+} |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6551 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6552 |
+static void |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6553 |
+trill_del_vlansreachablelist(void *obj) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6554 |
+{ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6555 |
+ XFREE (MTYPE_ISIS_TRILL_VLANSREACHABLE, obj); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6556 |
+} |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6557 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6558 |
+/* |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6559 |
+ * Compute VLAN filter lists by recursively going over the nodes in the DT. |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6560 |
+ * If rvertex is set then we stop at the matching node in the DT otherwise |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6561 |
+ * we stop until all children nodes are covered. |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6562 |
+ */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6563 |
+static void |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6564 |
+trill_compute_vlanfilterlist(struct isis_area *area, struct isis_spftree *rdtree, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6565 |
+ struct isis_vertex *vertex, struct isis_vertex *rvertex, uint8_t *filtermap) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6566 |
+{ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6567 |
+ nicknode_t *nicknode; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6568 |
+ struct isis_vertex *cvertex; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6569 |
+ struct listnode *node; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6570 |
+ int idx; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6571 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6572 |
+ if (!listnode_lookup (rdtree->paths, vertex)) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6573 |
+ return; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6574 |
+ if (vertex->type != VTYPE_NONPSEUDO_IS && |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6575 |
+ vertex->type != VTYPE_NONPSEUDO_TE_IS) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6576 |
+ return; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6577 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6578 |
+ nicknode = trill_nicknode_lookup(area, sysid_to_nick(area, vertex->N.id)); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6579 |
+ if (nicknode == NULL) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6580 |
+ return; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6581 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6582 |
+ MERGE_VLANS(filtermap, idx, nicknode->info.vlans_forwarder); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6583 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6584 |
+ if (rvertex != NULL && |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6585 |
+ (memcmp(vertex->N.id, rvertex->N.id, ISIS_SYS_ID_LEN) == 0)) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6586 |
+ return; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6587 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6588 |
+ if (vertex->children != NULL) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6589 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6590 |
+ for (ALL_LIST_ELEMENTS_RO(vertex->children, node, cvertex)) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6591 |
+ trill_compute_vlanfilterlist(area, rdtree, cvertex, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6592 |
+ rvertex, filtermap); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6593 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6594 |
+} |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6595 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6596 |
+/* |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6597 |
+ * Creates TRILL VLAN filter lists for each of our adjacencies on |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6598 |
+ * the given node's distribution tree (DT). A TRILL VLAN filter list |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6599 |
+ * for an adjacency on a distribution tree is the set of all VLANs that |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6600 |
+ * are reachable downstream via the adjacency. |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6601 |
+ */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6602 |
+void |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6603 |
+trill_create_vlanfilterlist(struct isis_area *area, nicknode_t *nicknode) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6604 |
+{ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6605 |
+ struct listnode *node; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6606 |
+ struct listnode *lnode; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6607 |
+ struct list *adjlist; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6608 |
+ struct isis_vertex *vertex; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6609 |
+ struct isis_vertex *rbvertex; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6610 |
+ struct isis_vertex *adjvertex; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6611 |
+ struct isis_spftree *rdtree; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6612 |
+ void *listdata; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6613 |
+ u_int16_t adjnick; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6614 |
+ nicknode_t *adjnode; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6615 |
+ int adjishead; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6616 |
+ struct list *vlanfilterlist; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6617 |
+ uint8_t *vlanfiltermap; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6618 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6619 |
+ if (nicknode == NULL) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6620 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6621 |
+ adjlist = area->trill->adjnodes; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6622 |
+ rdtree = area->spftree[TRILL_ISIS_LEVEL-1]; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6623 |
+ if (area->trill->vlans_reachable != NULL) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6624 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6625 |
+ list_delete(area->trill->vlans_reachable); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6626 |
+ area->trill->vlans_reachable = NULL; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6627 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6628 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6629 |
+ else |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6630 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6631 |
+ adjlist = nicknode->adjnodes; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6632 |
+ rdtree = nicknode->rdtree; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6633 |
+ if (nicknode->vlans_reachable != NULL) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6634 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6635 |
+ list_delete(nicknode->vlans_reachable); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6636 |
+ nicknode->vlans_reachable = NULL; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6637 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6638 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6639 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6640 |
+ if (adjlist == NULL) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6641 |
+ return; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6642 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6643 |
+ vlanfilterlist = list_new(); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6644 |
+ vlanfilterlist->del = trill_del_vlansreachablelist; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6645 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6646 |
+ /* |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6647 |
+ * For each of the adjacencies compute VLAN filter list |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6648 |
+ * on the DT with nicknode as the root. |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6649 |
+ */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6650 |
+ for (ALL_LIST_ELEMENTS_RO (adjlist, node, listdata)) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6651 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6652 |
+ adjnick = (u_int16_t)(u_long)listdata; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6653 |
+ adjnode = trill_nicknode_lookup(area, adjnick); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6654 |
+ if (adjnode == NULL) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6655 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6656 |
+ zlog_warn("trill_create_vlanfilterlist: adjlist node lookup failed."); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6657 |
+ list_delete(vlanfilterlist); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6658 |
+ return; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6659 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6660 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6661 |
+ /* |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6662 |
+ * Determine if the adjacency is towards the parent (adjishead is TRUE) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6663 |
+ * or if the adjacency is our child node on the DT with nicknode as root. |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6664 |
+ * Computing this direction determines how we search for reachable VLANs. |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6665 |
+ */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6666 |
+ adjishead = FALSE; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6667 |
+ rbvertex = adjvertex = NULL; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6668 |
+ for (ALL_LIST_ELEMENTS_RO (rdtree->paths, lnode, vertex)) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6669 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6670 |
+ if (vertex->type != VTYPE_NONPSEUDO_IS && |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6671 |
+ vertex->type != VTYPE_NONPSEUDO_TE_IS) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6672 |
+ continue; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6673 |
+ /* We found the adjacency node in the tree */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6674 |
+ if (memcmp (vertex->N.id, adjnode->info.sysid, ISIS_SYS_ID_LEN) == 0) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6675 |
+ adjvertex = vertex; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6676 |
+ /* We found our node in the DT with nicknode as root */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6677 |
+ else if (memcmp (vertex->N.id, area->isis->sysid, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6678 |
+ ISIS_SYS_ID_LEN) == 0) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6679 |
+ rbvertex = vertex; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6680 |
+ else |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6681 |
+ continue; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6682 |
+ /* If we found adjacency node first then we set adjishead to TRUE */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6683 |
+ if (!adjishead && adjvertex != NULL && rbvertex == NULL) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6684 |
+ adjishead = TRUE; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6685 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6686 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6687 |
+ if (rbvertex == NULL || adjvertex == NULL) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6688 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6689 |
+ zlog_warn("trill_create_vlanfilterlist: rbvertex adjvertex lookup failed."); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6690 |
+ list_delete(vlanfilterlist); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6691 |
+ return; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6692 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6693 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6694 |
+ vlanfiltermap = XCALLOC(MTYPE_ISIS_TRILL_VLANSREACHABLE, VLANS_ARRSIZE); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6695 |
+ if (adjishead == TRUE) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6696 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6697 |
+ /* |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6698 |
+ * If adjacency is head then compute VLAN filter lists from the root |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6699 |
+ * node and cover all nodes except all the children of the adjacency |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6700 |
+ * node. This covers all nodes in the tree except the adjacency |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6701 |
+ * branch. |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6702 |
+ */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6703 |
+ trill_compute_vlanfilterlist(area, rdtree, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6704 |
+ listgetdata(listhead (rdtree->paths)), adjvertex, vlanfiltermap); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6705 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6706 |
+ else |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6707 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6708 |
+ /* |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6709 |
+ * Adjacency is a child node of ours in the DT so to compute all the VLANs |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6710 |
+ * reachable through the child we just go over all the children nodes. |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6711 |
+ */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6712 |
+ trill_compute_vlanfilterlist(area, rdtree, adjvertex, NULL, vlanfiltermap); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6713 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6714 |
+ listnode_add(vlanfilterlist, vlanfiltermap); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6715 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6716 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6717 |
+ /* Must compute a VLAN filter map per adjacency */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6718 |
+ if (listcount(vlanfilterlist) == listcount(adjlist)) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6719 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6720 |
+ if (nicknode == NULL) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6721 |
+ area->trill->vlans_reachable = vlanfilterlist; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6722 |
+ else |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6723 |
+ nicknode->vlans_reachable = vlanfilterlist; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6724 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6725 |
+} |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6726 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6727 |
+static void |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6728 |
+trill_parse_enabled_vlans_subtlv(struct isis_adjacency *adj, u_int8_t *ptr, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6729 |
+ u_int8_t len) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6730 |
+{ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6731 |
+ u_int8_t *end; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6732 |
+ struct trill_enabledvlans_subtlv *vlanmap; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6733 |
+ int vlan; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6734 |
+ u_int8_t byte; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6735 |
+ int idx; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6736 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6737 |
+ end = ptr + len; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6738 |
+ vlanmap = (struct trill_enabledvlans_subtlv *)ptr; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6739 |
+ vlan = VLANTCI(ntohs(vlanmap->start_vlan)); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6740 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6741 |
+ ptr += sizeof (struct trill_enabledvlans_subtlv); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6742 |
+ while (ptr < end) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6743 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6744 |
+ byte = *ptr++; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6745 |
+ if (byte == 0) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6746 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6747 |
+ vlan += NBBY; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6748 |
+ continue; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6749 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6750 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6751 |
+ for (idx = NBBY-1; idx >= 0; idx--) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6752 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6753 |
+ if ((byte & (1<<idx)) != 0) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6754 |
+ SET_VLAN(adj->vlans->enabled, vlan); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6755 |
+ vlan++; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6756 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6757 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6758 |
+} |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6759 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6760 |
+static void |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6761 |
+inhibit_free(void *arg) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6762 |
+{ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6763 |
+ XFREE (MTYPE_ISIS_TRILL_INHIB, arg); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6764 |
+} |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6765 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6766 |
+static void |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6767 |
+remove_inhib(struct isis_circuit *circuit, u_int16_t rxvlan) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6768 |
+{ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6769 |
+ struct trill_inhibit_vlan *inhib; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6770 |
+ struct listnode *node, *nextnode; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6771 |
+ struct trill_circuit_vlans *cvlans = circuit->vlans; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6772 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6773 |
+ for (ALL_LIST_ELEMENTS (cvlans->inhibit_vlans, node, nextnode, inhib)) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6774 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6775 |
+ if (inhib->vlan == rxvlan) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6776 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6777 |
+ list_delete_node (cvlans->inhibit_vlans, node); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6778 |
+ inhibit_free (inhib); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6779 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6780 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6781 |
+ if (list_isempty (cvlans->inhibit_vlans) && cvlans->inhibit_all == 0 && |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6782 |
+ cvlans->inhibit_thread != NULL) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6783 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6784 |
+ thread_cancel (cvlans->inhibit_thread); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6785 |
+ cvlans->inhibit_thread = NULL; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6786 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6787 |
+} |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6788 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6789 |
+/* |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6790 |
+ * Update the previous and new lists of VLANs for which we're the appointed |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6791 |
+ * forwarder, based on the inhibited VLAN list. |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6792 |
+ * |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6793 |
+ * If the VLAN is set in the new list, then the inhibiting entry is still |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6794 |
+ * valid; clear it from that new list. |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6795 |
+ * |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6796 |
+ * If the VLAN is not set in the new list, then the DR has revoked our |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6797 |
+ * appointment, so the entry must be removed from the inhibit list, and treated |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6798 |
+ * as though it were previously enabled. |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6799 |
+ */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6800 |
+static void |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6801 |
+check_disabled_inhib (struct isis_circuit *circuit, u_int8_t *prevvlans, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6802 |
+ u_int8_t *newvlans) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6803 |
+{ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6804 |
+ struct trill_inhibit_vlan *inhib; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6805 |
+ struct listnode *node, *nextnode; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6806 |
+ struct trill_circuit_vlans *cvlans = circuit->vlans; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6807 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6808 |
+ for (ALL_LIST_ELEMENTS (cvlans->inhibit_vlans, node, nextnode, inhib)) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6809 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6810 |
+ if (CHECK_VLAN (newvlans, inhib->vlan)) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6811 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6812 |
+ CLEAR_VLAN (newvlans, inhib->vlan); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6813 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6814 |
+ else |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6815 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6816 |
+ SET_VLAN (prevvlans, inhib->vlan); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6817 |
+ list_delete_node (cvlans->inhibit_vlans, node); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6818 |
+ inhibit_free (inhib); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6819 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6820 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6821 |
+ if (list_isempty (cvlans->inhibit_vlans) && cvlans->inhibit_all == 0 && |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6822 |
+ cvlans->inhibit_thread != NULL) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6823 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6824 |
+ thread_cancel (cvlans->inhibit_thread); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6825 |
+ cvlans->inhibit_thread = NULL; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6826 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6827 |
+} |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6828 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6829 |
+static int |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6830 |
+uninhibit_vlan (struct thread *thread) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6831 |
+{ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6832 |
+ struct isis_circuit *circuit; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6833 |
+ struct trill_circuit_vlans *cvlans; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6834 |
+ struct listnode *node = NULL; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6835 |
+ struct trill_inhibit_vlan *inhib = NULL; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6836 |
+ int mintime, alltime; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6837 |
+ char reenabled = FALSE; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6838 |
+ time_t now; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6839 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6840 |
+ circuit = THREAD_ARG (thread); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6841 |
+ cvlans = circuit->vlans; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6842 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6843 |
+ now = time (NULL); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6844 |
+ alltime = cvlans->inhibit_all - now; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6845 |
+ if (cvlans->inhibit_all != 0 && alltime <= 0) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6846 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6847 |
+ cvlans->inhibit_all = 0; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6848 |
+ reenabled = TRUE; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6849 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6850 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6851 |
+ if (cvlans->inhibit_vlans != NULL) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6852 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6853 |
+ while ((node = listhead (cvlans->inhibit_vlans)) != NULL) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6854 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6855 |
+ inhib = listgetdata (node); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6856 |
+ if ((int)(inhib->reenable - now) > 0) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6857 |
+ break; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6858 |
+ reenabled = TRUE; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6859 |
+ SET_VLAN (cvlans->forwarder, inhib->vlan); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6860 |
+ list_delete_node (cvlans->inhibit_vlans, node); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6861 |
+ inhibit_free (inhib); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6862 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6863 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6864 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6865 |
+ /* If we've reenabled something, then tell the kernel */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6866 |
+ if (reenabled && cvlans->inhibit_all == 0) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6867 |
+ trill_set_vlan_forwarder (circuit, cvlans->forwarder); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6868 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6869 |
+ /* Set up the next expiry */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6870 |
+ if (node == NULL && cvlans->inhibit_all == 0) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6871 |
+ cvlans->inhibit_thread = NULL; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6872 |
+ else |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6873 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6874 |
+ mintime = node == NULL ? alltime : inhib->reenable - now; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6875 |
+ if (cvlans->inhibit_all != 0 && alltime < mintime) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6876 |
+ mintime = alltime; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6877 |
+ cvlans->inhibit_thread = thread_add_timer (master, uninhibit_vlan, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6878 |
+ circuit, mintime); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6879 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6880 |
+ return ISIS_OK; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6881 |
+} |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6882 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6883 |
+void |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6884 |
+trill_inhib_all(struct isis_circuit *circuit) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6885 |
+{ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6886 |
+ u_int8_t nullvlans[VLANS_ARRSIZE]; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6887 |
+ struct trill_circuit_vlans *cvlans = circuit->vlans; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6888 |
+ int interval; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6889 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6890 |
+ memset (nullvlans, 0, sizeof nullvlans); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6891 |
+ trill_set_vlan_forwarder (circuit, nullvlans); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6892 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6893 |
+ interval = 15; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6894 |
+ cvlans->inhibit_all = time (NULL) + interval; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6895 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6896 |
+ THREAD_TIMER_ON (master, cvlans->inhibit_thread, uninhibit_vlan, circuit, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6897 |
+ interval); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6898 |
+} |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6899 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6900 |
+static void |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6901 |
+add_inhib(struct isis_circuit *circuit, u_int16_t rxvlan) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6902 |
+{ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6903 |
+ struct trill_circuit_vlans *cvlans = circuit->vlans; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6904 |
+ struct trill_inhibit_vlan *inhib; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6905 |
+ int interval; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6906 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6907 |
+ interval = 5 * circuit->hello_interval[0]; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6908 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6909 |
+ inhib = XMALLOC (MTYPE_ISIS_TRILL_INHIB, sizeof (*inhib)); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6910 |
+ inhib->vlan = rxvlan; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6911 |
+ inhib->reenable = time (NULL) + interval; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6912 |
+ listnode_add (cvlans->inhibit_vlans, inhib); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6913 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6914 |
+ CLEAR_VLAN (cvlans->forwarder, rxvlan); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6915 |
+ if (cvlans->inhibit_all == 0) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6916 |
+ trill_set_vlan_forwarder (circuit, cvlans->forwarder); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6917 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6918 |
+ THREAD_TIMER_ON (master, cvlans->inhibit_thread, uninhibit_vlan, circuit, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6919 |
+ interval); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6920 |
+} |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6921 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6922 |
+/* |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6923 |
+ * Process incoming hello packets and process port capability TLVs. |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6924 |
+ */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6925 |
+void |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6926 |
+trill_process_hello(struct isis_adjacency *adj, struct list *portcaps) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6927 |
+{ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6928 |
+ u_int8_t subtlv; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6929 |
+ u_int8_t *ptr; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6930 |
+ int len; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6931 |
+ int subtlv_len; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6932 |
+ struct listnode *node; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6933 |
+ struct port_capability_tlv *pcap; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6934 |
+ struct trill_vlanflags_subtlv *vlanflags = NULL; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6935 |
+ struct isis_circuit *circuit = adj->circuit; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6936 |
+ struct trill_circuit_vlans *cvlans = circuit->vlans; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6937 |
+ struct list *vlanfwders = NULL; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6938 |
+ int vflags_stlv_found = FALSE; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6939 |
+ int adj_is_dr = FALSE; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6940 |
+ int dis_nick = RBRIDGE_NICKNAME_NONE; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6941 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6942 |
+ if (circuit->circ_type != CIRCUIT_T_BROADCAST) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6943 |
+ return; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6944 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6945 |
+ if ((!circuit->u.bc.is_dr[TRILL_ISIS_LEVEL - 1]) && |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6946 |
+ memcmp(circuit->u.bc.l1_desig_is, adj->sysid, ISIS_SYS_ID_LEN) == 0) { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6947 |
+ adj_is_dr = TRUE; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6948 |
+ dis_nick = sysid_to_nick(circuit->area, adj->sysid); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6949 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6950 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6951 |
+ memset(adj->vlans->enabled, 0, VLANS_ARRSIZE); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6952 |
+ for (ALL_LIST_ELEMENTS_RO (portcaps, node, pcap)) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6953 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6954 |
+ len = pcap->len; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6955 |
+ ptr = pcap->value; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6956 |
+ while (len > TLFLDS_LEN) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6957 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6958 |
+ subtlv = *ptr; ptr++; len--; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6959 |
+ subtlv_len = *ptr; ptr++; len--; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6960 |
+ if (subtlv_len > len) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6961 |
+ break; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6962 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6963 |
+ switch (subtlv) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6964 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6965 |
+ case PCSTLV_VLANS: |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6966 |
+ if (vflags_stlv_found == TRUE) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6967 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6968 |
+ zlog_warn("trill_process_hello: received more than" |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6969 |
+ " one VLANs and Flags sub-TLV"); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6970 |
+ vlanflags = NULL; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6971 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6972 |
+ else if (subtlv_len == PCSTLV_VLANS_LEN && vlanflags == NULL) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6973 |
+ vlanflags = (struct trill_vlanflags_subtlv *)ptr; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6974 |
+ len -= subtlv_len; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6975 |
+ ptr += subtlv_len; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6976 |
+ vflags_stlv_found = TRUE; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6977 |
+ break; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6978 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6979 |
+ case PCSTLV_APPFORWARDERS: |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6980 |
+ if ((subtlv_len % sizeof (struct appointed_vlanfwder_subtlv)) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6981 |
+ != 0) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6982 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6983 |
+ zlog_warn("trill_process_hello: received invalid length:%d" |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6984 |
+ " appointed forwarders sub-TLV", subtlv_len); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6985 |
+ len -= subtlv_len; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6986 |
+ ptr += subtlv_len; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6987 |
+ break; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6988 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6989 |
+ if (vlanfwders == NULL) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6990 |
+ vlanfwders = list_new(); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6991 |
+ while (subtlv_len > 0) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6992 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6993 |
+ listnode_add (vlanfwders, ptr); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6994 |
+ ptr += sizeof (struct appointed_vlanfwder_subtlv); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6995 |
+ subtlv_len -= sizeof (struct appointed_vlanfwder_subtlv); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6996 |
+ len -= sizeof (struct appointed_vlanfwder_subtlv); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6997 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6998 |
+ break; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
6999 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7000 |
+ case PCSTLV_ENABLEDVLANS: |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7001 |
+ if (subtlv_len < PCSTLV_ENABLEDVLANS_MIN_LEN) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7002 |
+ zlog_warn("trill_process_hello:" |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7003 |
+ " received invalid length (too small):%d" |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7004 |
+ " enabled VLANS sub-TLV", subtlv_len); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7005 |
+ else |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7006 |
+ trill_parse_enabled_vlans_subtlv(adj, ptr, subtlv_len); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7007 |
+ len -= subtlv_len; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7008 |
+ ptr += subtlv_len; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7009 |
+ break; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7010 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7011 |
+ default: |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7012 |
+ len -= subtlv_len; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7013 |
+ ptr += subtlv_len; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7014 |
+ break; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7015 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7016 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7017 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7018 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7019 |
+ /* Process appointed VLAN forwarders sub-TLV */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7020 |
+ if (adj_is_dr) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7021 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7022 |
+ u_int8_t *fwdvlans; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7023 |
+ u_int8_t *enabledvlans; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7024 |
+ u_int8_t prevfwdvlans[VLANS_ARRSIZE]; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7025 |
+ u_int8_t appvlans[VLANS_ARRSIZE]; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7026 |
+ struct appointed_vlanfwder_subtlv *appvlanfwder; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7027 |
+ struct isis_adjacency *nadj; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7028 |
+ int vlan; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7029 |
+ int vbyte; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7030 |
+ int vlanstart; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7031 |
+ int vlanend; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7032 |
+ u_char *sysid; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7033 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7034 |
+ memcpy(prevfwdvlans, cvlans->forwarder, VLANS_ARRSIZE); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7035 |
+ bzero(appvlans, sizeof (appvlans)); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7036 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7037 |
+ /* Clear existing VLAN forwarder information */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7038 |
+ trill_clear_vlanfwderinfo(circuit); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7039 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7040 |
+ if (vlanfwders != NULL) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7041 |
+ for (ALL_LIST_ELEMENTS_RO (vlanfwders, node, appvlanfwder)) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7042 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7043 |
+ /* Disregard any appointed VLAN forwarders to the DR */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7044 |
+ if (appvlanfwder->appointee_nick == dis_nick) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7045 |
+ continue; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7046 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7047 |
+ if (appvlanfwder->appointee_nick == circuit->area->trill->nick.name) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7048 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7049 |
+ sysid = circuit->area->isis->sysid; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7050 |
+ fwdvlans = cvlans->forwarder; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7051 |
+ enabledvlans = cvlans->enabled; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7052 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7053 |
+ else |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7054 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7055 |
+ sysid = nick_to_sysid (circuit->area, appvlanfwder->appointee_nick); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7056 |
+ if (!sysid) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7057 |
+ continue; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7058 |
+ if ((nadj = isis_adj_lookup (sysid, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7059 |
+ circuit->u.bc.adjdb[TRILL_ISIS_LEVEL-1])) == NULL) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7060 |
+ continue; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7061 |
+ fwdvlans = nadj->vlans->forwarder; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7062 |
+ enabledvlans = nadj->vlans->enabled; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7063 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7064 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7065 |
+ vlanstart = VLANTCI(ntohs(appvlanfwder->vlan_start)); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7066 |
+ vlanend = VLANTCI(ntohs(appvlanfwder->vlan_end)); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7067 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7068 |
+ /* Only accept VLANs the RBridge has advertised as enabled */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7069 |
+ for (vlan = vlanstart; vlan <= vlanend; vlan++) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7070 |
+ if (CHECK_VLAN(enabledvlans, vlan)) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7071 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7072 |
+ SET_VLAN (fwdvlans, vlan); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7073 |
+ SET_VLAN (appvlans, vlan); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7074 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7075 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7076 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7077 |
+ /* |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7078 |
+ * Determine the VLANs forwarded by the adj that is the DR: they are |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7079 |
+ * all the VLANs enabled in the DR minus the VLANs that have appointed |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7080 |
+ * VLAN forwarders on the link. |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7081 |
+ */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7082 |
+ for (vbyte = 0; vbyte < VLANS_ARRSIZE; vbyte++) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7083 |
+ adj->vlans->forwarder[vbyte] = |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7084 |
+ adj->vlans->enabled[vbyte] & ~appvlans[vbyte]; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7085 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7086 |
+ /* |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7087 |
+ * If there are any inhibited VLANs, then check whether we've lost AF |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7088 |
+ * status for them. If so, then remove the inhibiting entry; it's no |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7089 |
+ * longer valid. If not, then remove from new forwarder list. |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7090 |
+ */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7091 |
+ if (cvlans->inhibit_vlans != NULL) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7092 |
+ check_disabled_inhib (circuit, prevfwdvlans, cvlans->forwarder); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7093 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7094 |
+ /* |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7095 |
+ * If the set of VLANs for which we've been appointed as forwarder has |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7096 |
+ * changed, then regenerate new LSPs with new AF bits and deal with AF |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7097 |
+ * status changes. |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7098 |
+ */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7099 |
+ if (memcmp (prevfwdvlans, cvlans->forwarder, VLANS_ARRSIZE)) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7100 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7101 |
+ int lost_any, vbit; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7102 |
+ u_int8_t vval; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7103 |
+ struct isis_circuit *ocir; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7104 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7105 |
+ /* |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7106 |
+ * Compute the set of VLANs for which we're forwarder for some other |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7107 |
+ * circuit. |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7108 |
+ */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7109 |
+ bzero (appvlans, sizeof (appvlans)); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7110 |
+ for (ALL_LIST_ELEMENTS_RO (circuit->area->circuit_list, node, ocir)) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7111 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7112 |
+ if (ocir != circuit) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7113 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7114 |
+ for (vbyte = 0; vbyte < VLANS_ARRSIZE; vbyte++) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7115 |
+ appvlans[vbyte] |= ocir->vlans->forwarder[vbyte]; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7116 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7117 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7118 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7119 |
+ /* |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7120 |
+ * For all VLANs where we've lost AF status, increment the lost |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7121 |
+ * counter and flush bridge forwarding entries learned directly over |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7122 |
+ * this circuit for this VLAN. |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7123 |
+ */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7124 |
+ lost_any = FALSE; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7125 |
+ for (vbyte = 0; vbyte < VLANS_ARRSIZE; vbyte++) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7126 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7127 |
+ vval = prevfwdvlans[vbyte] & ~cvlans->forwarder[vbyte]; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7128 |
+ if (vval != 0) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7129 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7130 |
+ lost_any = TRUE; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7131 |
+ for (vbit = 0; vbit < 8; vbit++) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7132 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7133 |
+ if (vval & (1 << vbit)) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7134 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7135 |
+ vlan = vbyte * 8 + vbit; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7136 |
+ trill_port_flush (circuit, vlan); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7137 |
+ if (!CHECK_VLAN (appvlans, vlan)) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7138 |
+ trill_nick_flush (circuit, vlan); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7139 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7140 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7141 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7142 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7143 |
+ if (lost_any) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7144 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7145 |
+ /* XXX carlsonj bump lost counter here */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7146 |
+ trill_send_tc_bpdus (circuit); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7147 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7148 |
+ lsp_regenerate_schedule (circuit->area); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7149 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7150 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7151 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7152 |
+ if (vlanflags != NULL) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7153 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7154 |
+ int outervlan, rxvlan; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7155 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7156 |
+ /* |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7157 |
+ * First get the flags stored in outer_vlan. Check for a conflict if |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7158 |
+ * we've been set as the appointed forwarder. |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7159 |
+ */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7160 |
+ outervlan = ntohs (vlanflags->outer_vlan); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7161 |
+ rxvlan = VLANTCI (cvlans->rx_tci); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7162 |
+ if ((outervlan & TVFFO_AF) && CHECK_VLAN (cvlans->forwarder, rxvlan)) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7163 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7164 |
+ /* The inhibited VLANs list is created just once; it's rare */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7165 |
+ if (cvlans->inhibit_vlans == NULL) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7166 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7167 |
+ cvlans->inhibit_vlans = list_new (); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7168 |
+ cvlans->inhibit_vlans->del = inhibit_free; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7169 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7170 |
+ /* Remove any stale entries for this VLAN. */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7171 |
+ remove_inhib (circuit, rxvlan); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7172 |
+ /* Now add a new entry for the VLAN */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7173 |
+ add_inhib (circuit, rxvlan); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7174 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7175 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7176 |
+ adj->vlans->designated = VLANTCI(ntohs(vlanflags->desig_vlan)); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7177 |
+ outervlan = VLANTCI(outervlan); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7178 |
+ SET_VLAN(adj->vlans->seen, outervlan); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7179 |
+ SET_VLAN(adj->vlans->seen, VLANTCI(cvlans->rx_tci)); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7180 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7181 |
+ /* If Adj is DR set circuit's designated link */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7182 |
+ if (adj_is_dr) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7183 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7184 |
+ cvlans->designated = adj->vlans->designated; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7185 |
+ cvlans->tx_tci = VLANTCI(cvlans->designated); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7186 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7187 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7188 |
+ if (vlanfwders != NULL) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7189 |
+ list_delete (vlanfwders); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7190 |
+} |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7191 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7192 |
+/* Add TRILL VLAN TLVs in TRILL IS-IS hellos */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7193 |
+int |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7194 |
+tlv_add_trill_vlans(struct isis_circuit *circuit) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7195 |
+{ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7196 |
+ struct stream *stream = circuit->snd_stream; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7197 |
+ struct trill_vlanflags_subtlv vlanflags; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7198 |
+ uint16_t outervlan; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7199 |
+ struct listnode *node; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7200 |
+ size_t tlvstart; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7201 |
+ struct trill_enabled_vlans_listnode *evlans; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7202 |
+ struct appointed_vlanfwder_subtlv *vlanfwder; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7203 |
+ int rc; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7204 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7205 |
+ if (circuit->circ_type != CIRCUIT_T_BROADCAST) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7206 |
+ return ISIS_OK; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7207 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7208 |
+ tlvstart = stream_get_endp (stream); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7209 |
+ rc = add_tlv(PORT_CAPABILITY, 0, NULL, stream); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7210 |
+ if (rc != ISIS_OK) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7211 |
+ return rc; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7212 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7213 |
+ outervlan = VLANTCI(circuit->vlans->tx_tci); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7214 |
+ if (CHECK_VLAN(circuit->vlans->forwarder, outervlan)) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7215 |
+ outervlan |= TVFFO_AF; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7216 |
+ vlanflags.outer_vlan = htons(outervlan); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7217 |
+ vlanflags.desig_vlan = htons(circuit->vlans->designated); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7218 |
+ rc = add_subtlv (PCSTLV_VLANS, sizeof (vlanflags), (uchar_t *)&vlanflags, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7219 |
+ tlvstart, stream); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7220 |
+ if (rc != ISIS_OK) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7221 |
+ return rc; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7222 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7223 |
+ if (circuit->vlans->enabled_vlans != NULL) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7224 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7225 |
+ for (ALL_LIST_ELEMENTS_RO(circuit->vlans->enabled_vlans, node, evlans)) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7226 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7227 |
+ rc = add_subtlv(PCSTLV_ENABLEDVLANS, evlans->len, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7228 |
+ (uchar_t *)&evlans->tlvdata, tlvstart, stream); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7229 |
+ if (rc == ISIS_ERROR) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7230 |
+ return rc; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7231 |
+ if (rc == ISIS_WARNING) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7232 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7233 |
+ tlvstart = stream_get_endp (stream); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7234 |
+ rc = add_tlv(PORT_CAPABILITY, 0, NULL, stream); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7235 |
+ if (rc != ISIS_OK) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7236 |
+ return rc; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7237 |
+ rc = add_subtlv(PCSTLV_ENABLEDVLANS, evlans->len, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7238 |
+ (uchar_t *)&evlans->tlvdata, tlvstart, stream); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7239 |
+ if (rc != ISIS_OK) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7240 |
+ return rc; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7241 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7242 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7243 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7244 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7245 |
+ if (!circuit->u.bc.is_dr[TRILL_ISIS_LEVEL - 1] || |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7246 |
+ circuit->vlans->appvlanfwders == NULL) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7247 |
+ return rc; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7248 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7249 |
+ for (ALL_LIST_ELEMENTS_RO(circuit->vlans->appvlanfwders, node, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7250 |
+ vlanfwder)) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7251 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7252 |
+ rc = add_subtlv(PCSTLV_APPFORWARDERS, sizeof(*vlanfwder), |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7253 |
+ (uchar_t *)vlanfwder, tlvstart, stream); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7254 |
+ if (rc == ISIS_ERROR) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7255 |
+ return rc; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7256 |
+ if (rc == ISIS_WARNING) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7257 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7258 |
+ tlvstart = stream_get_endp (stream); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7259 |
+ rc = add_tlv(PORT_CAPABILITY, 0, NULL, stream); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7260 |
+ if (rc != ISIS_OK) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7261 |
+ return rc; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7262 |
+ rc = add_subtlv(PCSTLV_APPFORWARDERS, sizeof(*vlanfwder), |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7263 |
+ (uchar_t *)vlanfwder, tlvstart, stream); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7264 |
+ if (rc != ISIS_OK) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7265 |
+ return rc; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7266 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7267 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7268 |
+ return rc; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7269 |
+} |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7270 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7271 |
+/* |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7272 |
+ * show trill circuits command to display TRILL circuit information. |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7273 |
+ */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7274 |
+void |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7275 |
+trill_circuits_print_all (struct vty *vty, struct isis_area *area) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7276 |
+{ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7277 |
+ struct listnode *node; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7278 |
+ struct isis_circuit *circuit; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7279 |
+ int vlan_count = 0; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7280 |
+ int vlan_set; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7281 |
+ int vlan; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7282 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7283 |
+ if (area->circuit_list == NULL) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7284 |
+ return; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7285 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7286 |
+ for (ALL_LIST_ELEMENTS_RO(area->circuit_list, node, circuit)) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7287 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7288 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7289 |
+ vty_out (vty, "%sInterface %s:%s", VTY_NEWLINE, circuit->interface->name, VTY_NEWLINE); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7290 |
+ vty_out (vty, "PVID:%d Our Designated VLAN:%d Designated VLAN:%d%s", |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7291 |
+ circuit->vlans->pvid, circuit->vlans->designated, circuit->vlans->our_designated, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7292 |
+ VTY_NEWLINE); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7293 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7294 |
+ vty_out (vty, "VLAN Forwarder: "); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7295 |
+ EACH_VLAN_SET(circuit->vlans->forwarder, vlan, vlan_set) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7296 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7297 |
+ vlan_count++; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7298 |
+ if (vlan_count % 8 == 0) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7299 |
+ vty_out(vty, "%s ", VTY_NEWLINE); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7300 |
+ vty_out (vty, "%d ", vlan); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7301 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7302 |
+ vty_out (vty, "%sEnabled VLANs: ", VTY_NEWLINE); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7303 |
+ vlan_count = 0; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7304 |
+ EACH_VLAN_SET(circuit->vlans->enabled, vlan, vlan_set) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7305 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7306 |
+ vlan_count++; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7307 |
+ if (vlan_count % 8 == 0) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7308 |
+ vty_out(vty, "%s ", VTY_NEWLINE); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7309 |
+ vty_out (vty, "%d ", vlan); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7310 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7311 |
+ vty_out (vty, "%s", VTY_NEWLINE); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7312 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7313 |
+} |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7314 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7315 |
+DEFUN (trill_isis_vlan, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7316 |
+ trill_isis_vlan_cmd, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7317 |
+ "trill isis vlan <1-4094>", |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7318 |
+ "TRILL IS-IS commands\n" |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7319 |
+ "Set TRILL IS-IS VLAN\n" |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7320 |
+ "VLAN ID\n") |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7321 |
+{ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7322 |
+ struct isis_circuit *circuit; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7323 |
+ struct interface *ifp; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7324 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7325 |
+ ifp = vty->index; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7326 |
+ circuit = ifp->info; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7327 |
+ if (circuit == NULL) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7328 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7329 |
+ return CMD_WARNING; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7330 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7331 |
+ assert (circuit); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7332 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7333 |
+ SET_VLAN(circuit->vlans->enabled, atoi(argv[0])); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7334 |
+ return CMD_SUCCESS; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7335 |
+} |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7336 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7337 |
+DEFUN (trill_isis_no_vlan, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7338 |
+ trill_isis_no_vlan_cmd, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7339 |
+ "trill isis no vlan <1-4094>", |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7340 |
+ "TRILL IS-IS commands\n" |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7341 |
+ "Clear TRILL IS-IS VLAN\n" |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7342 |
+ "VLAN ID\n") |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7343 |
+{ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7344 |
+ struct isis_circuit *circuit; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7345 |
+ struct interface *ifp; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7346 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7347 |
+ ifp = vty->index; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7348 |
+ circuit = ifp->info; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7349 |
+ if (circuit == NULL) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7350 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7351 |
+ return CMD_WARNING; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7352 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7353 |
+ assert (circuit); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7354 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7355 |
+ CLEAR_VLAN(circuit->vlans->enabled, atoi(argv[0])); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7356 |
+ return CMD_SUCCESS; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7357 |
+} |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7358 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7359 |
+DEFUN (trill_isis_pvid, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7360 |
+ trill_isis_pvid_cmd, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7361 |
+ "trill isis pvid <1-4094>", |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7362 |
+ "TRILL IS-IS commands\n" |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7363 |
+ "Set TRILL IS-IS Native VLAN (PVID) \n" |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7364 |
+ "PVID\n") |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7365 |
+{ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7366 |
+ struct isis_circuit *circuit; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7367 |
+ struct interface *ifp; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7368 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7369 |
+ ifp = vty->index; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7370 |
+ circuit = ifp->info; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7371 |
+ if (circuit == NULL) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7372 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7373 |
+ return CMD_WARNING; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7374 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7375 |
+ assert (circuit); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7376 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7377 |
+ circuit->vlans->pvid = atoi(argv[0]); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7378 |
+ return CMD_SUCCESS; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7379 |
+} |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7380 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7381 |
+void |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7382 |
+install_trill_vlan_elements (void) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7383 |
+{ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7384 |
+ install_element (INTERFACE_NODE, &trill_isis_vlan_cmd); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7385 |
+ install_element (INTERFACE_NODE, &trill_isis_no_vlan_cmd); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7386 |
+ install_element (INTERFACE_NODE, &trill_isis_pvid_cmd); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7387 |
+} |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7388 |
diff --git isisd/isis_vlans.h isisd/isis_vlans.h |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7389 |
new file mode 100644 |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7390 |
index 0000000..9a54e58 |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7391 |
--- /dev/null |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7392 |
+++ isisd/isis_vlans.h |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7393 |
@@ -0,0 +1,128 @@ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7394 |
+/* |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7395 |
+ * IS-IS Rout(e)ing protocol - isis_vlans.h |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7396 |
+ * |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7397 |
+ * This program is free software; you can redistribute it and/or modify it |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7398 |
+ * under the terms of the GNU General Public Licenseas published by the Free |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7399 |
+ * Software Foundation; either version 2 of the License, or (at your option) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7400 |
+ * any later version. |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7401 |
+ * |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7402 |
+ * This program is distributed in the hope that it will be useful,but WITHOUT |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7403 |
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7404 |
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7405 |
+ * more details. |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7406 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7407 |
+ * You should have received a copy of the GNU General Public License along |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7408 |
+ * with this program; if not, write to the Free Software Foundation, Inc., |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7409 |
+ * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7410 |
+ */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7411 |
+#ifndef ISIS_VLANS_H |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7412 |
+#define ISIS_VLANS_H |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7413 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7414 |
+/* TRILL IS-IS VLANs */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7415 |
+#define NO_TCI 0 |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7416 |
+#define DFLT_VLAN 1 |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7417 |
+#define VLANS_SIZE (1<<12) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7418 |
+#define VLANS_ARRSIZE (VLANS_SIZE/NBBY) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7419 |
+#define VLAN_MAX 4094 |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7420 |
+#define VLAN_MIN 1 |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7421 |
+#define VLANTCI(p) ((p)&((VLANS_SIZE)-1)) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7422 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7423 |
+#define VLANBIT(v) ((v) % NBBY) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7424 |
+#define VLANBYTE(v) ((v)/NBBY) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7425 |
+#define CHECK_VLAN(p, v) ((p)[VLANBYTE(v)] & (1<<VLANBIT(v))) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7426 |
+#define SET_VLAN(p, v) \ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7427 |
+ do { \ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7428 |
+ if ((v) > 0) \ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7429 |
+ ((p)[VLANBYTE(v)] |= 1<<VLANBIT(v)); \ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7430 |
+ } while (0) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7431 |
+#define CLEAR_VLAN(p, v) \ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7432 |
+ do { \ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7433 |
+ if ((v) > 0) \ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7434 |
+ ((p)[VLANBYTE(v)] &= ~(1<<VLANBIT(v))); \ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7435 |
+ } while (0) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7436 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7437 |
+#define EACH_VLAN(p, v, c) \ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7438 |
+ for ( \ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7439 |
+ (v) = VLAN_MIN; \ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7440 |
+ ((v) <= VLAN_MAX) && \ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7441 |
+ ((c) = CHECK_VLAN((p), (v)), 1); \ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7442 |
+ (v)++ ) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7443 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7444 |
+#define EACH_VLAN_SET(p, v, c) \ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7445 |
+ EACH_VLAN(p, v, c) \ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7446 |
+ if (c) \ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7447 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7448 |
+#define EACH_VLAN_R(p, v, c) \ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7449 |
+ for (; \ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7450 |
+ ((v) <= VLAN_MAX) && \ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7451 |
+ ((c) = CHECK_VLAN((p), (v)), 1); \ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7452 |
+ (v)++ ) \ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7453 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7454 |
+#define EACH_VLAN_SET_R(p, v, c) \ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7455 |
+ EACH_VLAN_R(p, v, c) \ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7456 |
+ if (c) \ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7457 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7458 |
+#define MERGE_VLANS(p, v, z) \ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7459 |
+ do { \ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7460 |
+ for ((v) = 0; (v) < VLANS_ARRSIZE; (v)++) \ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7461 |
+ (p)[(v)] |= (z)[(v)]; \ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7462 |
+ } while (0) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7463 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7464 |
+/* source: http://graphics.stanford.edu/~seander/bithacks.html */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7465 |
+#define REVERSE_BYTE(v) ((uint8_t)((((v) * 0x0802LU & 0x22110LU) | \ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7466 |
+ ((v) * 0x8020LU & 0x88440LU)) * 0x10101LU >> 16)); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7467 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7468 |
+#define MAX_VLANS_SUBTLV_LEN 240 /* 255 - bytes for type, len, start vlan */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7469 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7470 |
+/* Encoded enabled VLANs information for Hello PDU PCTLV_ENABLEDVLANS */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7471 |
+struct trill_enabled_vlans_listnode |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7472 |
+{ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7473 |
+ uint16_t len; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7474 |
+ struct trill_enabledvlans_subtlv tlvdata; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7475 |
+}; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7476 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7477 |
+/* |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7478 |
+ * Entry on the inhibit_vlan list. This should be rarely used; it corresponds |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7479 |
+ * to receipt of a Hello message from some other node claiming AF status for a |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7480 |
+ * VLAN for which we were appointed. |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7481 |
+ */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7482 |
+struct trill_inhibit_vlan |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7483 |
+{ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7484 |
+ time_t reenable; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7485 |
+ u_int16_t vlan; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7486 |
+}; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7487 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7488 |
+struct trill_circuit_vlans |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7489 |
+{ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7490 |
+ u_int16_t pvid; /* Default/Native VLAN for untagged frames */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7491 |
+ u_int16_t designated; /* Designated VLAN for the circuit */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7492 |
+ u_int16_t our_designated; /* Our choice for Designated VLAN */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7493 |
+ u_int8_t enabled[VLANS_ARRSIZE]; /* VLANs we could be the forwarder */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7494 |
+ u_int8_t forwarder[VLANS_ARRSIZE]; /* VLANs for which we are the forwarder */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7495 |
+ u_int16_t rx_tci; /* PCP, CFI, VID */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7496 |
+ u_int16_t tx_tci; /* PCP, CFI, VID */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7497 |
+ struct list *enabled_vlans; /* List of enabled vlans TLV data */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7498 |
+ struct list *appvlanfwders; /* Appointed VLAN forwarders */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7499 |
+ u_int32_t vlanfwdershash; /* Hash to check change in VLAN forwarders */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7500 |
+ struct list *inhibit_vlans; /* VLANs inhibited by foreign AF flags (rare) */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7501 |
+ time_t inhibit_all; /* All inhibited by root bridge (common) */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7502 |
+ struct thread *inhibit_thread; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7503 |
+}; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7504 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7505 |
+struct trill_adj_vlans |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7506 |
+{ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7507 |
+ u_int16_t designated; /* Designated VLAN when adj is DR */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7508 |
+ u_int8_t forwarder[VLANS_ARRSIZE]; /* VLANs the adj forwards */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7509 |
+ u_int8_t enabled[VLANS_ARRSIZE]; /* VLANs the adj has enabled */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7510 |
+ u_int8_t seen[VLANS_ARRSIZE]; /* VLANs we send hellos to adj */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7511 |
+}; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7512 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7513 |
+struct trill_vlan_bridge_roots |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7514 |
+{ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7515 |
+ int vlan_start; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7516 |
+ int vlan_end; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7517 |
+ int bridge_roots_count; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7518 |
+ struct ether_addr *bridge_roots; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7519 |
+}; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7520 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7521 |
+#endif /* ISIS_VLANS_H */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7522 |
diff --git isisd/isisd.c isisd/isisd.c |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7523 |
index 7c669fc..3ea6fcd 100644 |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7524 |
--- isisd/isisd.c |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7525 |
+++ isisd/isisd.c |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7526 |
@@ -40,7 +40,6 @@ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7527 |
#include "isisd/isis_common.h" |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7528 |
#include "isisd/isis_circuit.h" |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7529 |
#include "isisd/isis_flags.h" |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7530 |
-#include "isisd/isisd.h" |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7531 |
#include "isisd/isis_dynhn.h" |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7532 |
#include "isisd/isis_adjacency.h" |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7533 |
#include "isisd/isis_pdu.h" |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7534 |
@@ -52,6 +51,12 @@ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7535 |
#include "isisd/isis_route.h" |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7536 |
#include "isisd/isis_zebra.h" |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7537 |
#include "isisd/isis_events.h" |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7538 |
+#ifdef HAVE_TRILL |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7539 |
+#include "isisd/isis_vlans.h" |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7540 |
+#include "isisd/isis_trill.h" |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7541 |
+#endif |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7542 |
+#include "isisd/isisd.h" |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7543 |
+#include "isisd/bool.h" |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7544 |
|
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7545 |
#ifdef TOPOLOGY_GENERATE |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7546 |
#include "spgrid.h" |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7547 |
@@ -64,14 +69,11 @@ extern struct thread_master *master; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7548 |
/* |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7549 |
* Prototypes. |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7550 |
*/ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7551 |
-void isis_new(unsigned long); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7552 |
-struct isis_area *isis_area_create(void); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7553 |
int isis_area_get(struct vty *, const char *); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7554 |
int isis_area_destroy(struct vty *, const char *); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7555 |
-int area_net_title(struct vty *, const u_char *); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7556 |
-int area_clear_net_title(struct vty *, const u_char *); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7557 |
+int area_net_title(struct vty *, const char *); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7558 |
+int area_clear_net_title(struct vty *, const char *); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7559 |
int show_clns_neigh(struct vty *, char); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7560 |
-void print_debug(struct vty *, int, int); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7561 |
int isis_config_write(struct vty *); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7562 |
|
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7563 |
|
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7564 |
@@ -100,7 +102,7 @@ isis_new (unsigned long process_id) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7565 |
} |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7566 |
|
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7567 |
struct isis_area * |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7568 |
-isis_area_create () |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7569 |
+isis_area_create (const char *area_tag) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7570 |
{ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7571 |
struct isis_area *area; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7572 |
|
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7573 |
@@ -131,6 +133,9 @@ isis_area_create () |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7574 |
area->area_addrs = list_new (); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7575 |
THREAD_TIMER_ON (master, area->t_tick, lsp_tick, area, 1); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7576 |
flags_initialize (&area->flags); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7577 |
+#ifdef HAVE_TRILL |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7578 |
+ area->trill = XCALLOC (MTYPE_ISIS_TRILLAREA, sizeof (struct trill_info)); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7579 |
+#endif |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7580 |
/* |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7581 |
* Default values |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7582 |
*/ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7583 |
@@ -152,6 +157,15 @@ isis_area_create () |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7584 |
/* FIXME: Think of a better way... */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7585 |
area->min_bcast_mtu = 1497; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7586 |
|
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7587 |
+ area->area_tag = strdup (area_tag); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7588 |
+ listnode_add (isis->area_list, area); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7589 |
+ area->isis = isis; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7590 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7591 |
+#ifdef HAVE_TRILL |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7592 |
+ if (isis->trill_active) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7593 |
+ trill_area_init (area); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7594 |
+#endif |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7595 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7596 |
return area; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7597 |
} |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7598 |
|
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7599 |
@@ -184,9 +198,17 @@ isis_area_get (struct vty *vty, const char *area_tag) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7600 |
return CMD_SUCCESS; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7601 |
} |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7602 |
|
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7603 |
- area = isis_area_create (); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7604 |
- area->area_tag = strdup (area_tag); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7605 |
- listnode_add (isis->area_list, area); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7606 |
+#ifdef HAVE_TRILL |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7607 |
+ if (isis->trill_active && isis->area_list->count != 0) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7608 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7609 |
+ vty_out (vty, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7610 |
+ "TRILL area exists, can only define one IS-IS area for TRILL. %s", |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7611 |
+ VTY_NEWLINE); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7612 |
+ return CMD_WARNING; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7613 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7614 |
+#endif |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7615 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7616 |
+ area = isis_area_create (area_tag); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7617 |
|
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7618 |
if (isis->debugs & DEBUG_EVENTS) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7619 |
zlog_debug ("New IS-IS area instance %s", area->area_tag); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7620 |
@@ -212,6 +234,12 @@ isis_area_destroy (struct vty *vty, const char *area_tag) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7621 |
return CMD_WARNING; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7622 |
} |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7623 |
|
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7624 |
+#ifdef HAVE_TRILL |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7625 |
+ trill_area_free (area); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7626 |
+ XFREE (MTYPE_ISIS_TRILLAREA, area->trill); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7627 |
+#endif |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7628 |
+ spftree_area_del (area); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7629 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7630 |
if (area->circuit_list) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7631 |
{ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7632 |
for (ALL_LIST_ELEMENTS (area->circuit_list, node, nnode, circuit)) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7633 |
@@ -230,13 +258,14 @@ isis_area_destroy (struct vty *vty, const char *area_tag) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7634 |
THREAD_TIMER_OFF (area->t_lsp_refresh[0]); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7635 |
THREAD_TIMER_OFF (area->t_lsp_refresh[1]); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7636 |
|
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7637 |
+ free (area->area_tag); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7638 |
XFREE (MTYPE_ISIS_AREA, area); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7639 |
|
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7640 |
return CMD_SUCCESS; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7641 |
} |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7642 |
|
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7643 |
int |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7644 |
-area_net_title (struct vty *vty, const u_char *net_title) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7645 |
+area_net_title (struct vty *vty, const char *net_title) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7646 |
{ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7647 |
struct isis_area *area; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7648 |
struct area_addr *addr; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7649 |
@@ -330,7 +359,7 @@ area_net_title (struct vty *vty, const u_char *net_title) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7650 |
} |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7651 |
|
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7652 |
int |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7653 |
-area_clear_net_title (struct vty *vty, const u_char *net_title) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7654 |
+area_clear_net_title (struct vty *vty, const char *net_title) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7655 |
{ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7656 |
struct isis_area *area; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7657 |
struct area_addr addr, *addrp = NULL; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7658 |
@@ -524,7 +553,10 @@ print_debug (struct vty *vty, int flags, int onoff) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7659 |
VTY_NEWLINE); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7660 |
if (flags & DEBUG_EVENTS) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7661 |
vty_out (vty, "IS-IS Event debugging is %s%s", onoffs, VTY_NEWLINE); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7662 |
- |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7663 |
+#ifdef HAVE_TRILL |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7664 |
+ if (flags & DEBUG_TRILL_EVENTS) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7665 |
+ vty_out (vty, "IS-IS TRILL Event debugging is %s%s", onoffs, VTY_NEWLINE); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7666 |
+#endif |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7667 |
} |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7668 |
|
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7669 |
DEFUN (show_debugging, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7670 |
@@ -606,6 +638,13 @@ config_write_debug (struct vty *vty) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7671 |
vty_out (vty, "debug isis events%s", VTY_NEWLINE); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7672 |
write++; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7673 |
} |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7674 |
+#ifdef HAVE_TRILL |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7675 |
+ if (flags & DEBUG_TRILL_EVENTS) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7676 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7677 |
+ vty_out (vty, "debug trill events%s", VTY_NEWLINE); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7678 |
+ write++; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7679 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7680 |
+#endif |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7681 |
|
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7682 |
return write; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7683 |
} |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7684 |
@@ -792,7 +831,6 @@ DEFUN (no_debug_isis_spfevents, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7685 |
return CMD_SUCCESS; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7686 |
} |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7687 |
|
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7688 |
- |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7689 |
DEFUN (debug_isis_spfstats, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7690 |
debug_isis_spfstats_cmd, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7691 |
"debug isis spf-statistics ", |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7692 |
@@ -1045,7 +1083,7 @@ DEFUN (area_passwd, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7693 |
|
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7694 |
if (!area) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7695 |
{ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7696 |
- vty_out (vty, "Cant find IS-IS instance%s", VTY_NEWLINE); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7697 |
+ vty_out (vty, "Can't find IS-IS instance%s", VTY_NEWLINE); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7698 |
return CMD_WARNING; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7699 |
} |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7700 |
|
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7701 |
@@ -1098,7 +1136,7 @@ DEFUN (no_area_passwd, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7702 |
|
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7703 |
if (!area) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7704 |
{ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7705 |
- vty_out (vty, "Cant find IS-IS instance%s", VTY_NEWLINE); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7706 |
+ vty_out (vty, "Can't find IS-IS instance%s", VTY_NEWLINE); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7707 |
return CMD_WARNING; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7708 |
} |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7709 |
|
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7710 |
@@ -1120,7 +1158,7 @@ DEFUN (domain_passwd, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7711 |
|
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7712 |
if (!area) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7713 |
{ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7714 |
- vty_out (vty, "Cant find IS-IS instance%s", VTY_NEWLINE); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7715 |
+ vty_out (vty, "Can't find IS-IS instance%s", VTY_NEWLINE); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7716 |
return CMD_WARNING; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7717 |
} |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7718 |
|
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7719 |
@@ -1173,7 +1211,7 @@ DEFUN (no_domain_passwd, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7720 |
|
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7721 |
if (!area) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7722 |
{ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7723 |
- vty_out (vty, "Cant find IS-IS instance%s", VTY_NEWLINE); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7724 |
+ vty_out (vty, "Can't find IS-IS instance%s", VTY_NEWLINE); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7725 |
return CMD_WARNING; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7726 |
} |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7727 |
|
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7728 |
@@ -1197,7 +1235,7 @@ DEFUN (is_type, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7729 |
|
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7730 |
if (!area) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7731 |
{ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7732 |
- vty_out (vty, "Cant find IS-IS instance%s", VTY_NEWLINE); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7733 |
+ vty_out (vty, "Can't find IS-IS instance%s", VTY_NEWLINE); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7734 |
return CMD_WARNING; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7735 |
} |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7736 |
|
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7737 |
@@ -1207,6 +1245,14 @@ DEFUN (is_type, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7738 |
vty_out (vty, "Unknown IS level %s", VTY_NEWLINE); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7739 |
return CMD_SUCCESS; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7740 |
} |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7741 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7742 |
+#ifdef HAVE_TRILL |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7743 |
+ if (area->isis->trill_active) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7744 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7745 |
+ vty_out (vty, "Can't set level when TRILL is enabled%s", VTY_NEWLINE); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7746 |
+ return CMD_WARNING; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7747 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7748 |
+#endif |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7749 |
|
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7750 |
isis_event_system_type_change (area, type); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7751 |
|
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7752 |
@@ -1228,6 +1274,14 @@ DEFUN (no_is_type, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7753 |
area = vty->index; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7754 |
assert (area); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7755 |
|
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7756 |
+#ifdef HAVE_TRILL |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7757 |
+ if (area->isis->trill_active) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7758 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7759 |
+ vty_out (vty, "Can't reset level when TRILL is enabled%s", VTY_NEWLINE); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7760 |
+ return CMD_WARNING; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7761 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7762 |
+#endif |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7763 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7764 |
/* |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7765 |
* Put the is-type back to default. Which is level-1-2 on first |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7766 |
* circuit for the area level-1 for the rest |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7767 |
@@ -1894,6 +1948,15 @@ isis_config_write (struct vty *vty) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7768 |
struct isis_area *area; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7769 |
struct listnode *node, *node2; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7770 |
|
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7771 |
+#ifdef HAVE_TRILL |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7772 |
+ /* ISIS - TRILL enabled control flag */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7773 |
+ if (isis->trill_active) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7774 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7775 |
+ vty_out (vty, "isis trill%s", VTY_NEWLINE); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7776 |
+ write++; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7777 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7778 |
+#endif |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7779 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7780 |
for (ALL_LIST_ELEMENTS_RO (isis->area_list, node, area)) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7781 |
{ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7782 |
/* ISIS - Area name */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7783 |
@@ -1943,6 +2006,31 @@ isis_config_write (struct vty *vty) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7784 |
write++; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7785 |
} |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7786 |
} |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7787 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7788 |
+#ifdef HAVE_TRILL |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7789 |
+ /* ISIS TRILL configuration options */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7790 |
+ if (isis->trill_active) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7791 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7792 |
+ if (CHECK_FLAG(area->trill->status, TRILL_NICK_SET) && |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7793 |
+ (!CHECK_FLAG(area->trill->status, TRILL_AUTONICK))) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7794 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7795 |
+ vty_out (vty, " trill nickname %d%s", area->trill->nick.name, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7796 |
+ VTY_NEWLINE); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7797 |
+ write++; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7798 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7799 |
+ if (CHECK_FLAG(area->trill->status, TRILL_PRIORITY_SET)) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7800 |
+ { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7801 |
+ vty_out (vty, " trill nickname priority %d%s", |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7802 |
+ (area->trill->nick.priority & (~CONFIGURED_NICK_PRIORITY)), |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7803 |
+ VTY_NEWLINE); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7804 |
+ write++; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7805 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7806 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7807 |
+ vty_out(vty, " trill instance %s%s", area->trill->name, VTY_NEWLINE); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7808 |
+ write++; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7809 |
+ } |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7810 |
+#endif |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7811 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7812 |
/* ISIS - Lsp generation interval */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7813 |
if (area->lsp_gen_interval[0] == area->lsp_gen_interval[1]) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7814 |
{ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7815 |
@@ -2053,7 +2141,7 @@ isis_config_write (struct vty *vty) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7816 |
ISIS_SYS_ID_LEN)) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7817 |
{ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7818 |
vty_out (vty, " topology base-is %s%s", |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7819 |
- sysid_print (area->topology_baseis), VTY_NEWLINE); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7820 |
+ sysid_print ((u_char *)area->topology_baseis), VTY_NEWLINE); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7821 |
write++; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7822 |
} |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7823 |
if (area->topology_basedynh) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7824 |
@@ -2218,9 +2306,4 @@ isis_init () |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7825 |
install_element (VIEW_NODE, &show_isis_generated_topology_cmd); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7826 |
install_element (ENABLE_NODE, &show_isis_generated_topology_cmd); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7827 |
#endif /* TOPOLOGY_GENERATE */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7828 |
- |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7829 |
- isis_new (0); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7830 |
- isis_circuit_init (); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7831 |
- isis_zebra_init (); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7832 |
- isis_spf_cmds_init (); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7833 |
} |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7834 |
diff --git isisd/isisd.h isisd/isisd.h |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7835 |
index 2277f27..945d423 100644 |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7836 |
--- isisd/isisd.h |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7837 |
+++ isisd/isisd.h |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7838 |
@@ -51,6 +51,9 @@ struct isis |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7839 |
u_int32_t debugs; /* bitmap for debug */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7840 |
time_t uptime; /* when did we start */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7841 |
struct thread *t_dync_clean; /* dynamic hostname cache cleanup thread */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7842 |
+#ifdef HAVE_TRILL |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7843 |
+ int trill_active; /* TRILL support is active */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7844 |
+#endif |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7845 |
|
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7846 |
/* Redistributed external information. */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7847 |
struct route_table *external_info[ZEBRA_ROUTE_MAX + 1]; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7848 |
@@ -78,6 +81,8 @@ struct isis |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7849 |
#endif |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7850 |
}; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7851 |
|
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7852 |
+extern struct isis *isis; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7853 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7854 |
struct isis_area |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7855 |
{ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7856 |
struct isis *isis; /* back pointer */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7857 |
@@ -95,6 +100,9 @@ struct isis_area |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7858 |
struct thread *t_remove_aged; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7859 |
int lsp_regenerate_pending[ISIS_LEVELS]; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7860 |
struct thread *t_lsp_refresh[ISIS_LEVELS]; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7861 |
+#ifdef HAVE_TRILL |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7862 |
+ struct trill_info *trill; /* TRILL IS-IS information */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7863 |
+#endif |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7864 |
|
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7865 |
/* |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7866 |
* Configurables |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7867 |
@@ -128,14 +136,20 @@ struct isis_area |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7868 |
|
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7869 |
#ifdef TOPOLOGY_GENERATE |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7870 |
struct list *topology; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7871 |
- char topology_baseis[ISIS_SYS_ID_LEN]; /* IS for the first IS emulated. */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7872 |
+ u_char topology_baseis[ISIS_SYS_ID_LEN]; /* IS for the first IS emulated. */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7873 |
char *topology_basedynh; /* Dynamic hostname base. */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7874 |
char top_params[200]; /* FIXME: what is reasonable? */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7875 |
#endif /* TOPOLOGY_GENERATE */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7876 |
}; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7877 |
|
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7878 |
void isis_init (void); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7879 |
+void isis_new(unsigned long); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7880 |
+struct isis_area *isis_area_create(const char *); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7881 |
struct isis_area *isis_area_lookup (const char *); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7882 |
+void print_debug(struct vty *, int, int); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7883 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7884 |
+/* Master of threads. */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7885 |
+extern struct thread_master *master; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7886 |
|
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7887 |
#define DEBUG_ADJ_PACKETS (1<<0) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7888 |
#define DEBUG_CHECKSUM_ERRORS (1<<1) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7889 |
@@ -149,5 +163,8 @@ struct isis_area *isis_area_lookup (const char *); |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7890 |
#define DEBUG_RTE_EVENTS (1<<9) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7891 |
#define DEBUG_EVENTS (1<<10) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7892 |
#define DEBUG_ZEBRA (1<<11) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7893 |
+#ifdef HAVE_TRILL |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7894 |
+#define DEBUG_TRILL_EVENTS (1<<12) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7895 |
+#endif |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7896 |
|
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7897 |
#endif /* ISISD_H */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7898 |
diff --git lib/command.h lib/command.h |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7899 |
index a725378..fefa6d3 100644 |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7900 |
--- lib/command.h |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7901 |
+++ lib/command.h |
641
719d637aca9f
7119945 Update Quagga to version 0.99.19
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
417
diff
changeset
|
7902 |
@@ -303,6 +303,8 @@ |
417
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7903 |
#define OSPF6_DUMP_TYPE_LIST \ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7904 |
"(neighbor|interface|area|lsa|zebra|config|dbex|spf|route|lsdb|redistribute|hook|asbr|prefix|abr)" |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7905 |
#define ISIS_STR "IS-IS information\n" |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7906 |
+#define TRILL_STR "TRILL IS-IS information\n" |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7907 |
+#define TRILL_NICK_STR "Configure TRILL RBridge nickname information\n" |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7908 |
#define AREA_TAG_STR "[area tag]\n" |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7909 |
|
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7910 |
#define CONF_BACKUP_EXT ".sav" |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7911 |
diff --git lib/memtypes.c lib/memtypes.c |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7912 |
index c7028c9..476ad35 100644 |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7913 |
--- lib/memtypes.c |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7914 |
+++ lib/memtypes.c |
641
719d637aca9f
7119945 Update Quagga to version 0.99.19
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
417
diff
changeset
|
7915 |
@@ -228,20 +228,32 @@ |
417
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7916 |
|
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7917 |
struct memory_list memory_list_isis[] = |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7918 |
{ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7919 |
- { MTYPE_ISIS, "ISIS" }, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7920 |
- { MTYPE_ISIS_TMP, "ISIS TMP" }, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7921 |
- { MTYPE_ISIS_CIRCUIT, "ISIS circuit" }, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7922 |
- { MTYPE_ISIS_LSP, "ISIS LSP" }, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7923 |
- { MTYPE_ISIS_ADJACENCY, "ISIS adjacency" }, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7924 |
- { MTYPE_ISIS_AREA, "ISIS area" }, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7925 |
- { MTYPE_ISIS_AREA_ADDR, "ISIS area address" }, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7926 |
- { MTYPE_ISIS_TLV, "ISIS TLV" }, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7927 |
- { MTYPE_ISIS_DYNHN, "ISIS dyn hostname" }, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7928 |
- { MTYPE_ISIS_SPFTREE, "ISIS SPFtree" }, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7929 |
- { MTYPE_ISIS_VERTEX, "ISIS vertex" }, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7930 |
- { MTYPE_ISIS_ROUTE_INFO, "ISIS route info" }, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7931 |
- { MTYPE_ISIS_NEXTHOP, "ISIS nexthop" }, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7932 |
- { MTYPE_ISIS_NEXTHOP6, "ISIS nexthop6" }, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7933 |
+ { MTYPE_ISIS, "ISIS" }, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7934 |
+ { MTYPE_ISIS_TMP, "ISIS TMP" }, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7935 |
+ { MTYPE_ISIS_CIRCUIT, "ISIS circuit" }, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7936 |
+ { MTYPE_ISIS_LSP, "ISIS LSP" }, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7937 |
+ { MTYPE_ISIS_ADJACENCY, "ISIS adjacency" }, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7938 |
+ { MTYPE_ISIS_AREA, "ISIS area" }, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7939 |
+ { MTYPE_ISIS_AREA_ADDR, "ISIS area address" }, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7940 |
+ { MTYPE_ISIS_TLV, "ISIS TLV" }, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7941 |
+ { MTYPE_ISIS_DYNHN, "ISIS dyn hostname" }, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7942 |
+ { MTYPE_ISIS_SPFTREE, "ISIS SPFtree" }, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7943 |
+ { MTYPE_ISIS_VERTEX, "ISIS vertex" }, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7944 |
+ { MTYPE_ISIS_ROUTE_INFO, "ISIS route info" }, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7945 |
+ { MTYPE_ISIS_NEXTHOP, "ISIS nexthop" }, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7946 |
+ { MTYPE_ISIS_NEXTHOP6, "ISIS nexthop6" }, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7947 |
+ { MTYPE_ISIS_TRILLAREA, "ISIS TRILL area information" }, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7948 |
+ { MTYPE_ISIS_TRILL_NICKDB_NODE,"ISIS TRILL nickdb node" }, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7949 |
+ { MTYPE_ISIS_TRILL_FWDTBL_NODE,"ISIS TRILL forwarding table node"}, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7950 |
+ { MTYPE_ISIS_TRILL_VLANS, "ISIS TRILL vlans"}, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7951 |
+ { MTYPE_ISIS_TRILL_ADJVLANS, "ISIS TRILL adjacency vlans"}, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7952 |
+ { MTYPE_ISIS_TRILL_VLANBRIDGE_ROOTS, "ISIS TRILL vlan bridge roots"}, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7953 |
+ { MTYPE_ISIS_TRILL_BRIDGE_ROOTIDS, "ISIS TRILL vlan bridge root IDs"}, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7954 |
+ { MTYPE_ISIS_TRILL_VLANSREACHABLE, "ISIS TRILL vlans reachable downstream"}, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7955 |
+ { MTYPE_ISIS_TRILL_VLANFWDERS, "ISIS TRILL VLAN forwarders" }, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7956 |
+ { MTYPE_ISIS_TRILL_ENABLEDVLANS, "ISIS TRILL enabled VLAN maps" }, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7957 |
+ { MTYPE_ISIS_TRILL_VLANSUBTLV, "ISIS TRILL VLAN subTLV construction" }, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7958 |
+ { MTYPE_ISIS_TRILL_INHIB, "ISIS TRILL VLAN inhibit entry" }, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7959 |
{ -1, NULL }, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7960 |
}; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7961 |
|
641
719d637aca9f
7119945 Update Quagga to version 0.99.19
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
417
diff
changeset
|
7962 |
diff --git lib/memtypes.h /dev/null |
417
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7963 |
deleted file mode 100644 |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7964 |
index 2d90e80..0000000 |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7965 |
--- lib/memtypes.h |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7966 |
+++ /dev/null |
641
719d637aca9f
7119945 Update Quagga to version 0.99.19
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
417
diff
changeset
|
7967 |
@@ -1,209 +0,0 @@ |
417
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7968 |
-/* Auto-generated from memtypes.c by gawk. */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7969 |
-/* Do not edit! */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7970 |
- |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7971 |
-#ifndef _QUAGGA_MEMTYPES_H |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7972 |
-#define _QUAGGA_MEMTYPES_H |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7973 |
- |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7974 |
-enum |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7975 |
-{ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7976 |
- MTYPE_TMP = 1, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7977 |
- MTYPE_STRVEC, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7978 |
- MTYPE_VECTOR, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7979 |
- MTYPE_VECTOR_INDEX, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7980 |
- MTYPE_LINK_LIST, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7981 |
- MTYPE_LINK_NODE, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7982 |
- MTYPE_THREAD, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7983 |
- MTYPE_THREAD_MASTER, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7984 |
- MTYPE_THREAD_STATS, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7985 |
- MTYPE_THREAD_FUNCNAME, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7986 |
- MTYPE_VTY, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7987 |
- MTYPE_VTY_OUT_BUF, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7988 |
- MTYPE_VTY_HIST, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7989 |
- MTYPE_IF, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7990 |
- MTYPE_CONNECTED, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7991 |
- MTYPE_CONNECTED_LABEL, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7992 |
- MTYPE_BUFFER, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7993 |
- MTYPE_BUFFER_DATA, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7994 |
- MTYPE_STREAM, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7995 |
- MTYPE_STREAM_DATA, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7996 |
- MTYPE_STREAM_FIFO, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7997 |
- MTYPE_PREFIX, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7998 |
- MTYPE_PREFIX_IPV4, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
7999 |
- MTYPE_PREFIX_IPV6, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8000 |
- MTYPE_HASH, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8001 |
- MTYPE_HASH_BACKET, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8002 |
- MTYPE_HASH_INDEX, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8003 |
- MTYPE_ROUTE_TABLE, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8004 |
- MTYPE_ROUTE_NODE, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8005 |
- MTYPE_DISTRIBUTE, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8006 |
- MTYPE_DISTRIBUTE_IFNAME, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8007 |
- MTYPE_ACCESS_LIST, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8008 |
- MTYPE_ACCESS_LIST_STR, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8009 |
- MTYPE_ACCESS_FILTER, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8010 |
- MTYPE_PREFIX_LIST, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8011 |
- MTYPE_PREFIX_LIST_ENTRY, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8012 |
- MTYPE_PREFIX_LIST_STR, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8013 |
- MTYPE_ROUTE_MAP, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8014 |
- MTYPE_ROUTE_MAP_NAME, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8015 |
- MTYPE_ROUTE_MAP_INDEX, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8016 |
- MTYPE_ROUTE_MAP_RULE, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8017 |
- MTYPE_ROUTE_MAP_RULE_STR, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8018 |
- MTYPE_ROUTE_MAP_COMPILED, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8019 |
- MTYPE_DESC, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8020 |
- MTYPE_KEY, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8021 |
- MTYPE_KEYCHAIN, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8022 |
- MTYPE_IF_RMAP, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8023 |
- MTYPE_IF_RMAP_NAME, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8024 |
- MTYPE_SOCKUNION, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8025 |
- MTYPE_PRIVS, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8026 |
- MTYPE_ZLOG, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8027 |
- MTYPE_ZCLIENT, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8028 |
- MTYPE_WORK_QUEUE, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8029 |
- MTYPE_WORK_QUEUE_ITEM, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8030 |
- MTYPE_WORK_QUEUE_NAME, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8031 |
- MTYPE_PQUEUE, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8032 |
- MTYPE_PQUEUE_DATA, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8033 |
- MTYPE_HOST, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8034 |
- MTYPE_RTADV_PREFIX, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8035 |
- MTYPE_VRF, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8036 |
- MTYPE_VRF_NAME, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8037 |
- MTYPE_NEXTHOP, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8038 |
- MTYPE_RIB, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8039 |
- MTYPE_RIB_QUEUE, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8040 |
- MTYPE_STATIC_IPV4, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8041 |
- MTYPE_STATIC_IPV6, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8042 |
- MTYPE_BGP, |
641
719d637aca9f
7119945 Update Quagga to version 0.99.19
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
417
diff
changeset
|
8043 |
- MTYPE_BGP_LISTENER, |
417
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8044 |
- MTYPE_BGP_PEER, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8045 |
- MTYPE_BGP_PEER_HOST, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8046 |
- MTYPE_PEER_GROUP, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8047 |
- MTYPE_PEER_DESC, |
641
719d637aca9f
7119945 Update Quagga to version 0.99.19
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
417
diff
changeset
|
8048 |
- MTYPE_PEER_PASSWORD, |
417
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8049 |
- MTYPE_ATTR, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8050 |
- MTYPE_ATTR_EXTRA, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8051 |
- MTYPE_AS_PATH, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8052 |
- MTYPE_AS_SEG, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8053 |
- MTYPE_AS_SEG_DATA, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8054 |
- MTYPE_AS_STR, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8055 |
- MTYPE_BGP_TABLE, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8056 |
- MTYPE_BGP_NODE, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8057 |
- MTYPE_BGP_ROUTE, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8058 |
- MTYPE_BGP_ROUTE_EXTRA, |
641
719d637aca9f
7119945 Update Quagga to version 0.99.19
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
417
diff
changeset
|
8059 |
- MTYPE_BGP_CONN, |
417
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8060 |
- MTYPE_BGP_STATIC, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8061 |
- MTYPE_BGP_ADVERTISE_ATTR, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8062 |
- MTYPE_BGP_ADVERTISE, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8063 |
- MTYPE_BGP_SYNCHRONISE, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8064 |
- MTYPE_BGP_ADJ_IN, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8065 |
- MTYPE_BGP_ADJ_OUT, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8066 |
- MTYPE_AS_LIST, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8067 |
- MTYPE_AS_FILTER, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8068 |
- MTYPE_AS_FILTER_STR, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8069 |
- MTYPE_COMMUNITY, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8070 |
- MTYPE_COMMUNITY_VAL, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8071 |
- MTYPE_COMMUNITY_STR, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8072 |
- MTYPE_ECOMMUNITY, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8073 |
- MTYPE_ECOMMUNITY_VAL, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8074 |
- MTYPE_ECOMMUNITY_STR, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8075 |
- MTYPE_COMMUNITY_LIST, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8076 |
- MTYPE_COMMUNITY_LIST_NAME, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8077 |
- MTYPE_COMMUNITY_LIST_ENTRY, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8078 |
- MTYPE_COMMUNITY_LIST_CONFIG, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8079 |
- MTYPE_COMMUNITY_LIST_HANDLER, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8080 |
- MTYPE_CLUSTER, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8081 |
- MTYPE_CLUSTER_VAL, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8082 |
- MTYPE_BGP_PROCESS_QUEUE, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8083 |
- MTYPE_BGP_CLEAR_NODE_QUEUE, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8084 |
- MTYPE_TRANSIT, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8085 |
- MTYPE_TRANSIT_VAL, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8086 |
- MTYPE_BGP_DISTANCE, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8087 |
- MTYPE_BGP_NEXTHOP_CACHE, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8088 |
- MTYPE_BGP_CONFED_LIST, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8089 |
- MTYPE_PEER_UPDATE_SOURCE, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8090 |
- MTYPE_BGP_DAMP_INFO, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8091 |
- MTYPE_BGP_DAMP_ARRAY, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8092 |
- MTYPE_BGP_REGEXP, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8093 |
- MTYPE_BGP_AGGREGATE, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8094 |
- MTYPE_RIP, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8095 |
- MTYPE_RIP_INFO, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8096 |
- MTYPE_RIP_INTERFACE, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8097 |
- MTYPE_RIP_PEER, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8098 |
- MTYPE_RIP_OFFSET_LIST, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8099 |
- MTYPE_RIP_DISTANCE, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8100 |
- MTYPE_RIPNG, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8101 |
- MTYPE_RIPNG_ROUTE, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8102 |
- MTYPE_RIPNG_AGGREGATE, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8103 |
- MTYPE_RIPNG_PEER, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8104 |
- MTYPE_RIPNG_OFFSET_LIST, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8105 |
- MTYPE_RIPNG_RTE_DATA, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8106 |
- MTYPE_OSPF_TOP, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8107 |
- MTYPE_OSPF_AREA, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8108 |
- MTYPE_OSPF_AREA_RANGE, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8109 |
- MTYPE_OSPF_NETWORK, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8110 |
- MTYPE_OSPF_NEIGHBOR_STATIC, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8111 |
- MTYPE_OSPF_IF, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8112 |
- MTYPE_OSPF_NEIGHBOR, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8113 |
- MTYPE_OSPF_ROUTE, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8114 |
- MTYPE_OSPF_TMP, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8115 |
- MTYPE_OSPF_LSA, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8116 |
- MTYPE_OSPF_LSA_DATA, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8117 |
- MTYPE_OSPF_LSDB, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8118 |
- MTYPE_OSPF_PACKET, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8119 |
- MTYPE_OSPF_FIFO, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8120 |
- MTYPE_OSPF_VERTEX, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8121 |
- MTYPE_OSPF_VERTEX_PARENT, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8122 |
- MTYPE_OSPF_NEXTHOP, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8123 |
- MTYPE_OSPF_PATH, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8124 |
- MTYPE_OSPF_VL_DATA, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8125 |
- MTYPE_OSPF_CRYPT_KEY, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8126 |
- MTYPE_OSPF_EXTERNAL_INFO, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8127 |
- MTYPE_OSPF_DISTANCE, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8128 |
- MTYPE_OSPF_IF_INFO, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8129 |
- MTYPE_OSPF_IF_PARAMS, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8130 |
- MTYPE_OSPF_MESSAGE, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8131 |
- MTYPE_OSPF6_TOP, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8132 |
- MTYPE_OSPF6_AREA, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8133 |
- MTYPE_OSPF6_IF, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8134 |
- MTYPE_OSPF6_NEIGHBOR, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8135 |
- MTYPE_OSPF6_ROUTE, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8136 |
- MTYPE_OSPF6_PREFIX, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8137 |
- MTYPE_OSPF6_MESSAGE, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8138 |
- MTYPE_OSPF6_LSA, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8139 |
- MTYPE_OSPF6_LSA_SUMMARY, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8140 |
- MTYPE_OSPF6_LSDB, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8141 |
- MTYPE_OSPF6_VERTEX, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8142 |
- MTYPE_OSPF6_SPFTREE, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8143 |
- MTYPE_OSPF6_NEXTHOP, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8144 |
- MTYPE_OSPF6_EXTERNAL_INFO, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8145 |
- MTYPE_OSPF6_OTHER, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8146 |
- MTYPE_ISIS, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8147 |
- MTYPE_ISIS_TMP, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8148 |
- MTYPE_ISIS_CIRCUIT, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8149 |
- MTYPE_ISIS_LSP, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8150 |
- MTYPE_ISIS_ADJACENCY, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8151 |
- MTYPE_ISIS_AREA, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8152 |
- MTYPE_ISIS_AREA_ADDR, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8153 |
- MTYPE_ISIS_TLV, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8154 |
- MTYPE_ISIS_DYNHN, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8155 |
- MTYPE_ISIS_SPFTREE, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8156 |
- MTYPE_ISIS_VERTEX, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8157 |
- MTYPE_ISIS_ROUTE_INFO, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8158 |
- MTYPE_ISIS_NEXTHOP, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8159 |
- MTYPE_ISIS_NEXTHOP6, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8160 |
- MTYPE_VTYSH_CONFIG, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8161 |
- MTYPE_VTYSH_CONFIG_LINE, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8162 |
- MTYPE_MAX, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8163 |
-}; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8164 |
- |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8165 |
-extern struct memory_list memory_list_lib[]; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8166 |
-extern struct memory_list memory_list_zebra[]; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8167 |
-extern struct memory_list memory_list_bgp[]; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8168 |
-extern struct memory_list memory_list_rip[]; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8169 |
-extern struct memory_list memory_list_ripng[]; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8170 |
-extern struct memory_list memory_list_ospf[]; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8171 |
-extern struct memory_list memory_list_ospf6[]; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8172 |
-extern struct memory_list memory_list_isis[]; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8173 |
-extern struct memory_list memory_list_vtysh[]; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8174 |
- |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8175 |
-#endif /* _QUAGGA_MEMTYPES_H */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8176 |
- |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8177 |
diff --git lib/privs.c lib/privs.c |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8178 |
index 69606f5..d290a59 100644 |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8179 |
--- lib/privs.c |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8180 |
+++ lib/privs.c |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8181 |
@@ -105,6 +105,7 @@ static struct |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8182 |
[ZCAP_BIND] = { 2, (pvalue_t []) { CAP_NET_BIND_SERVICE, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8183 |
CAP_NET_BROADCAST }, }, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8184 |
[ZCAP_NET_ADMIN] = { 1, (pvalue_t []) { CAP_NET_ADMIN }, }, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8185 |
+ [ZCAP_DL_CONFIG] = { 1, (pvalue_t []) { CAP_NET_ADMIN }, }, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8186 |
[ZCAP_NET_RAW] = { 1, (pvalue_t []) { CAP_NET_RAW }, }, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8187 |
[ZCAP_CHROOT] = { 1, (pvalue_t []) { CAP_SYS_CHROOT, }, }, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8188 |
[ZCAP_NICE] = { 1, (pvalue_t []) { CAP_SYS_NICE }, }, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8189 |
@@ -123,6 +124,7 @@ static struct |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8190 |
#else |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8191 |
[ZCAP_NET_ADMIN] = { 1, (pvalue_t []) { PRIV_SYS_NET_CONFIG }, }, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8192 |
#endif |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8193 |
+ [ZCAP_DL_CONFIG] = { 1, (pvalue_t []) { PRIV_SYS_DL_CONFIG }, }, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8194 |
[ZCAP_NET_RAW] = { 2, (pvalue_t []) { PRIV_NET_RAWACCESS, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8195 |
PRIV_NET_ICMPACCESS }, }, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8196 |
[ZCAP_CHROOT] = { 1, (pvalue_t []) { PRIV_PROC_CHROOT }, }, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8197 |
@@ -137,6 +139,7 @@ static struct |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8198 |
PRIV_FILE_DAC_READ }, }, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8199 |
[ZCAP_SYS_ADMIN] = { 1, (pvalue_t []) { PRIV_SYS_ADMIN }, }, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8200 |
[ZCAP_FOWNER] = { 1, (pvalue_t []) { PRIV_FILE_OWNER }, }, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8201 |
+ [ZCAP_EXEC] = { 1, (pvalue_t []) { PRIV_PROC_EXEC }, }, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8202 |
#endif /* HAVE_SOLARIS_CAPABILITIES */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8203 |
}; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8204 |
|
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8205 |
diff --git lib/privs.h lib/privs.h |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8206 |
index 46d614e..13dbfaf 100644 |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8207 |
--- lib/privs.h |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8208 |
+++ lib/privs.h |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8209 |
@@ -38,6 +38,8 @@ typedef enum |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8210 |
ZCAP_DAC_OVERRIDE, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8211 |
ZCAP_READ_SEARCH, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8212 |
ZCAP_FOWNER, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8213 |
+ ZCAP_DL_CONFIG, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8214 |
+ ZCAP_EXEC, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8215 |
ZCAP_MAX |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8216 |
} zebra_capabilities_t; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8217 |
|
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8218 |
diff --git lib/sigevent.c lib/sigevent.c |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8219 |
index 30e9a3d..2aeb201 100644 |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8220 |
--- lib/sigevent.c |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8221 |
+++ lib/sigevent.c |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8222 |
@@ -219,6 +219,7 @@ static void |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8223 |
trap_default_signals(void) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8224 |
{ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8225 |
static const int core_signals[] = { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8226 |
+#ifndef NO_CORE_SIGNALS |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8227 |
SIGQUIT, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8228 |
SIGILL, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8229 |
#ifdef SIGEMT |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8230 |
@@ -236,6 +237,7 @@ trap_default_signals(void) |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8231 |
#ifdef SIGXFSZ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8232 |
SIGXFSZ, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8233 |
#endif |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8234 |
+#endif /* NO_CORE_SIGNALS */ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8235 |
}; |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8236 |
static const int exit_signals[] = { |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8237 |
SIGHUP, |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8238 |
diff --git solaris/Makefile.am solaris/Makefile.am |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8239 |
index acccbdb..3520bc5 100644 |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8240 |
--- solaris/Makefile.am |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8241 |
+++ solaris/Makefile.am |
641
719d637aca9f
7119945 Update Quagga to version 0.99.19
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
417
diff
changeset
|
8242 |
@@ -14,7 +14,7 @@ |
719d637aca9f
7119945 Update Quagga to version 0.99.19
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
417
diff
changeset
|
8243 |
pkg_packages = $(pkg_names:%=@PACKAGE_TARNAME@-%-$(pkg_name_rev).pkg) |
719d637aca9f
7119945 Update Quagga to version 0.99.19
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
417
diff
changeset
|
8244 |
pkg_pkginfos = $(pkg_names:%=pkginfo.%.full) |
719d637aca9f
7119945 Update Quagga to version 0.99.19
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
417
diff
changeset
|
8245 |
pkg_prototypes = $(pkg_names:%=prototype.%) |
719d637aca9f
7119945 Update Quagga to version 0.99.19
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
417
diff
changeset
|
8246 |
-pkg_manifests = quagga.xml |
719d637aca9f
7119945 Update Quagga to version 0.99.19
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
417
diff
changeset
|
8247 |
+pkg_manifests = quagga.xml trill.xml |
417
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8248 |
|
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8249 |
# pkgmk variable substitutions wont grok ${variable} in prototype |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8250 |
# file, so we cant let autoconf generate the file sadly |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8251 |
diff --git solaris/trill.xml.in solaris/trill.xml.in |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8252 |
new file mode 100644 |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8253 |
index 0000000..f768878 |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8254 |
--- /dev/null |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8255 |
+++ solaris/trill.xml.in |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8256 |
@@ -0,0 +1,94 @@ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8257 |
+<?xml version="1.0"?> |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8258 |
+<!DOCTYPE service_bundle SYSTEM "/usr/share/lib/xml/dtd/service_bundle.dtd.1"> |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8259 |
+<!-- |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8260 |
+ This file is part of Quagga. |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8261 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8262 |
+ Quagga is free software; you can redistribute it and/or modify it |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8263 |
+ under the terms of the GNU General Public License as published by the |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8264 |
+ Free Software Foundation; either version 2, or (at your option) any |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8265 |
+ later version. |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8266 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8267 |
+ Quagga is distributed in the hope that it will be useful, but |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8268 |
+ WITHOUT ANY WARRANTY; without even the implied warranty of |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8269 |
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8270 |
+ General Public License for more details. |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8271 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8272 |
+ You should have received a copy of the GNU General Public License |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8273 |
+ along with Quagga; see the file COPYING. If not, write to the Free |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8274 |
+ Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8275 |
+ 02111-1307, USA. |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8276 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8277 |
+ Copyright (c) 2009, 2011, Oracle and/or its affiliates. All rights reserved. |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8278 |
+ Use is subject to license terms. |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8279 |
+--> |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8280 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8281 |
+<service_bundle type='manifest' name='SUNWtrill-daemons:quagga'> |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8282 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8283 |
+<service |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8284 |
+ name='network/routing/trill' |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8285 |
+ type='service' |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8286 |
+ version='1'> |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8287 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8288 |
+ <dependency name='filesystem' |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8289 |
+ grouping='require_all' |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8290 |
+ restart_on='none' |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8291 |
+ type='service'> |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8292 |
+ <service_fmri value='svc:/system/filesystem/local' /> |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8293 |
+ </dependency> |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8294 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8295 |
+ <dependency name='datalink' |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8296 |
+ grouping='require_all' |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8297 |
+ restart_on='none' |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8298 |
+ type='service'> |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8299 |
+ <service_fmri value='svc:/network/datalink-management' /> |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8300 |
+ </dependency> |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8301 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8302 |
+ <exec_method |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8303 |
+ type='method' |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8304 |
+ name='stop' |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8305 |
+ exec=':kill' |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8306 |
+ timeout_seconds='60'> |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8307 |
+ </exec_method> |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8308 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8309 |
+ <exec_method |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8310 |
+ type='method' |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8311 |
+ name='start' |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8312 |
+ exec='/usr/sbin/trilld -i "" -P 0 %i &' |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8313 |
+ timeout_seconds='60'> |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8314 |
+ <method_context> |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8315 |
+ <method_credential |
641
719d637aca9f
7119945 Update Quagga to version 0.99.19
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
417
diff
changeset
|
8316 |
+ user='root' group='root' /> |
417
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8317 |
+ </method_context> |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8318 |
+ </exec_method> |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8319 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8320 |
+ <exec_method |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8321 |
+ type='method' |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8322 |
+ name='refresh' |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8323 |
+ exec=':kill -HUP' |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8324 |
+ timeout_seconds='60'> |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8325 |
+ </exec_method> |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8326 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8327 |
+ <property_group name='startd' |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8328 |
+ type='framework'> |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8329 |
+ <!-- sub-process core dumps shouldn't restart session --> |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8330 |
+ <propval name='ignore_error' |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8331 |
+ type='astring' value='core,signal' /> |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8332 |
+ </property_group> |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8333 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8334 |
+ <stability value='Unstable' /> |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8335 |
+ |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8336 |
+ <template> |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8337 |
+ <common_name> |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8338 |
+ <loctext xml:lang='C'> |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8339 |
+ Quagga: trilld, TRILL bridging protocol daemon. |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8340 |
+ </loctext> |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8341 |
+ </common_name> |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8342 |
+ <documentation> |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8343 |
+ <manpage title='trilld' section='1M' |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8344 |
+ manpath='/usr/share/man' /> |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8345 |
+ <doc_link name='quagga.net' |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8346 |
+ uri='http://www.quagga.net/' /> |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8347 |
+ </documentation> |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8348 |
+ </template> |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8349 |
+</service> |
7c10b5cba79b
7066915 Move Quagga to Userland
Brian Utterback <Brian.Utterback@Oracle.COM>
parents:
diff
changeset
|
8350 |
+</service_bundle> |