summaryrefslogtreecommitdiff
path: root/net/openospfd/files/patch-ospfd_kroute.c
diff options
context:
space:
mode:
authorEmanuel Haupt <ehaupt@FreeBSD.org>2008-11-27 20:54:31 +0000
committerEmanuel Haupt <ehaupt@FreeBSD.org>2008-11-27 20:54:31 +0000
commit86cd9787064088334776af097c8b2fd2e5ec3f22 (patch)
tree7d57c9e24a6d3e72bfe293e3d3edab07b1bfc540 /net/openospfd/files/patch-ospfd_kroute.c
parentUpdate to the 20081126 snapshot of GCC 4.2.5. Mostly assorted bugfixes (diff)
Update to 4.2
PR: 120788 Submitted by: Eygene Ryabinkin <rea-fbsd@codelabs.ru> Tested by: Doichin Dokov <root@net1.cc> Approved by: maintainer timeout
Notes
Notes: svn path=/head/; revision=223467
Diffstat (limited to 'net/openospfd/files/patch-ospfd_kroute.c')
-rw-r--r--net/openospfd/files/patch-ospfd_kroute.c138
1 files changed, 119 insertions, 19 deletions
diff --git a/net/openospfd/files/patch-ospfd_kroute.c b/net/openospfd/files/patch-ospfd_kroute.c
index 6415a3b80316..2b1bd77f96eb 100644
--- a/net/openospfd/files/patch-ospfd_kroute.c
+++ b/net/openospfd/files/patch-ospfd_kroute.c
@@ -1,36 +1,136 @@
---- ospfd/kroute.c.orig Mon Nov 20 14:41:22 2006
-+++ ospfd/kroute.c Mon Nov 20 14:42:17 2006
-@@ -875,10 +875,6 @@
+--- ospfd/kroute.c.orig 2008-02-07 18:58:38.000000000 +0300
++++ ospfd/kroute.c 2008-02-07 19:09:58.000000000 +0300
+@@ -955,9 +955,11 @@
+ struct sockaddr_in prefix;
+ struct sockaddr_in nexthop;
+ struct sockaddr_in mask;
++#if !defined(__FreeBSD__)
+ struct sockaddr_rtlabel sa_rl;
+- int iovcnt = 0;
+ const char *label;
++#endif /* !defined(__FreeBSD__) */
++ int iovcnt = 0;
+
+ if (kr_state.fib_sync == 0)
+ return (0);
+@@ -1011,6 +1013,7 @@
+ iov[iovcnt].iov_base = &mask;
+ iov[iovcnt++].iov_len = sizeof(mask);
+
++#if !defined(__FreeBSD__) /* FreeBSD has no route labeling. */
+ if (kroute->rtlabel != 0) {
+ sa_rl.sr_len = sizeof(sa_rl);
+ sa_rl.sr_family = AF_UNSPEC;
+@@ -1027,6 +1030,7 @@
+ iov[iovcnt].iov_base = &sa_rl;
+ iov[iovcnt++].iov_len = sizeof(sa_rl);
+ }
++#endif /* !defined(__FreeBSD__) */
+
+
+ retry:
+@@ -1069,7 +1073,9 @@
+ struct rt_msghdr *rtm;
+ struct sockaddr *sa, *rti_info[RTAX_MAX];
+ struct sockaddr_in *sa_in;
++#if !defined(__FreeBSD__)
+ struct sockaddr_rtlabel *label;
++#endif
+ struct kroute_node *kr;
+
+ mib[0] = CTL_NET;
+@@ -1078,9 +1084,13 @@
+ mib[3] = AF_INET;
+ mib[4] = NET_RT_DUMP;
+ mib[5] = 0;
++#if !defined(__FreeBSD__) /* FreeBSD has no multiple routing tables */
+ mib[6] = 0; /* rtableid */
+
+ if (sysctl(mib, 7, NULL, &len, NULL, 0) == -1) {
++#else
++ if (sysctl(mib, 6, NULL, &len, NULL, 0) == -1) {
++#endif /* !defined(__FreeBSD__) */
+ log_warn("sysctl");
+ return (-1);
+ }
+@@ -1098,7 +1098,11 @@
+ log_warn("fetchtable");
+ return (-1);
+ }
++#if !defined(__FreeBSD__) /* FreeBSD has no multiple routing tables */
+ if (sysctl(mib, 7, buf, &len, NULL, 0) == -1) {
++#else
++ if (sysctl(mib, 6, buf, &len, NULL, 0) == -1) {
++#endif /* !defined(__FreeBSD__) */
+ log_warn("sysctl");
+ free(buf);
+ return (-1);
+@@ -1157,6 +1163,7 @@
send_rtmsg(kr_state.fd, RTM_DELETE, &kr->r);
free(kr);
} else {
-- if ((label = (struct sockaddr_rtlabel *)
-- rti_info[RTAX_LABEL]) != NULL)
-- kr->r.rtlabel =
-- rtlabel_name2id(label->sr_label);
++#if !defined(__FreeBSD__) /* FreeBSD has no route labeling. */
+ if ((label = (struct sockaddr_rtlabel *)
+ rti_info[RTAX_LABEL]) != NULL) {
+ kr->r.rtlabel =
+@@ -1164,6 +1171,7 @@
+ kr->r.ext_tag =
+ rtlabel_id2tag(kr->r.rtlabel);
+ }
++#endif /* !defined(__FreeBSD__) */
kroute_insert(kr);
}
-@@ -1075,10 +1071,6 @@
+@@ -1257,7 +1265,9 @@
+ struct ifa_msghdr *ifam;
+ struct sockaddr *sa, *rti_info[RTAX_MAX];
+ struct sockaddr_in *sa_in;
++#if !defined(__FreeBSD__)
+ struct sockaddr_rtlabel *label;
++#endif /* !defined(__FreeBSD__) */
+ struct kroute_node *kr, *okr;
+ struct in_addr prefix, nexthop;
+ u_int8_t prefixlen;
+@@ -1289,8 +1299,10 @@
+ sa = (struct sockaddr *)(rtm + 1);
+ get_rtaddrs(rtm->rtm_addrs, sa, rti_info);
++#if !defined(__FreeBSD__) /* XXX: FreeBSD has no multiple routing tables */
+ if (rtm->rtm_tableid != 0)
+ continue;
++#endif
+
+ if (rtm->rtm_pid == kr_state.pid) /* caused by us */
+ continue;
+@@ -1385,6 +1397,7 @@
rtlabel_unref(kr->r.rtlabel);
kr->r.rtlabel = 0;
-- if ((label = (struct sockaddr_rtlabel *)
-- rti_info[RTAX_LABEL]) != NULL)
-- kr->r.rtlabel =
-- rtlabel_name2id(label->sr_label);
+ kr->r.ext_tag = 0;
++#if !defined(__FreeBSD__) /* FreeBSD has no route labeling. */
+ if ((label = (struct sockaddr_rtlabel *)
+ rti_info[RTAX_LABEL]) != NULL) {
+ kr->r.rtlabel =
+@@ -1392,6 +1405,7 @@
+ kr->r.ext_tag =
+ rtlabel_id2tag(kr->r.rtlabel);
+ }
++#endif /* !defined(__FreeBSD__) */
if (kif_validate(kr->r.ifindex))
kr->r.flags &= ~F_DOWN;
-@@ -1098,11 +1090,6 @@
- kr->r.nexthop.s_addr = nexthop.s_addr;
+@@ -1413,6 +1427,7 @@
kr->r.flags = flags;
kr->r.ifindex = ifindex;
--
-- if ((label = (struct sockaddr_rtlabel *)
-- rti_info[RTAX_LABEL]) != NULL)
-- kr->r.rtlabel =
-- rtlabel_name2id(label->sr_label);
+
++#if !defined(__FreeBSD__) /* FreeBSD has no route labeling */
+ if ((label = (struct sockaddr_rtlabel *)
+ rti_info[RTAX_LABEL]) != NULL) {
+ kr->r.rtlabel =
+@@ -1420,6 +1435,7 @@
+ kr->r.ext_tag =
+ rtlabel_id2tag(kr->r.rtlabel);
+ }
++#endif /* !defined(__FreeBSD__) */
kroute_insert(kr);
}