summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorOndrej Zajicek <santiago@crfreenet.org>2012-03-15 12:38:08 +0100
committerOndrej Zajicek <santiago@crfreenet.org>2012-03-15 12:38:08 +0100
commite2bf812f3dc84981eac045b617261987c25b5e90 (patch)
treede7c5849aa5c18174eae79a2e9b394ce540cf896
parentf761503760fba2d4124cc3352f5260c31fac526d (diff)
Fixes RIPng compatibility.
Also probably breaks compatibility with older BIRDs, but RIPng not really worked here. Thanks to Goesta Smekal for the original patch.
-rw-r--r--proto/rip/rip.c6
-rw-r--r--proto/rip/rip.h20
2 files changed, 21 insertions, 5 deletions
diff --git a/proto/rip/rip.c b/proto/rip/rip.c
index 30d2267e..b41c3f8d 100644
--- a/proto/rip/rip.c
+++ b/proto/rip/rip.c
@@ -146,7 +146,11 @@ rip_tx( sock *s )
DBG( "Preparing packet to send: " );
packet->heading.command = RIPCMD_RESPONSE;
+#ifndef IPV6
packet->heading.version = RIP_V2;
+#else
+ packet->heading.version = RIP_NG;
+#endif
packet->heading.unused = 0;
i = !!P_CF->authtype;
@@ -979,7 +983,7 @@ rip_init_config(struct rip_proto_config *c)
{
init_list(&c->iface_list);
c->infinity = 16;
- c->port = 520;
+ c->port = RIP_PORT;
c->period = 30;
c->garbage_time = 120+180;
c->timeout_time = 120;
diff --git a/proto/rip/rip.h b/proto/rip/rip.h
index 5a6e36d8..896fab64 100644
--- a/proto/rip/rip.h
+++ b/proto/rip/rip.h
@@ -11,8 +11,19 @@
#define EA_RIP_TAG EA_CODE(EAP_RIP, 0)
#define EA_RIP_METRIC EA_CODE(EAP_RIP, 1)
-#define PACKET_MAX 25
-#define PACKET_MD5_MAX 18 /* FIXME */
+#define PACKET_MAX 25
+#define PACKET_MD5_MAX 18 /* FIXME */
+
+
+#define RIP_V1 1
+#define RIP_V2 2
+#define RIP_NG 1 /* A new version numbering */
+
+#ifndef IPV6
+#define RIP_PORT 520 /* RIP for IPv4 */
+#else
+#define RIP_PORT 521 /* RIPng */
+#endif
struct rip_connection {
node n;
@@ -37,8 +48,9 @@ struct rip_packet_heading { /* 4 bytes */
#define RIPCMD_TRACEOFF 4 /* turn it off */
#define RIPCMD_MAX 5
u8 version;
-#define RIP_V1 1
-#define RIP_V2 2
+#define RIP_V1 1
+#define RIP_V2 2
+#define RIP_NG 1 /* this is verion 1 of RIPng */
u16 unused;
};