summaryrefslogtreecommitdiff
path: root/proto/ospf/ospf.h
diff options
context:
space:
mode:
Diffstat (limited to 'proto/ospf/ospf.h')
-rw-r--r--proto/ospf/ospf.h31
1 files changed, 23 insertions, 8 deletions
diff --git a/proto/ospf/ospf.h b/proto/ospf/ospf.h
index d1de12ad..2a499f75 100644
--- a/proto/ospf/ospf.h
+++ b/proto/ospf/ospf.h
@@ -9,7 +9,6 @@
#ifndef _BIRD_OSPF_H_
#define _BIRD_OSPF_H_
-#define SIPH SIZE_OF_IP_HEADER
#define MAXNETS 10
#ifdef LOCAL_DEBUG
#define OSPF_FORCE_DEBUG 1
@@ -122,8 +121,9 @@ struct ospf_iface
ip_addr vip; /* IP of peer of virtual link */
struct ospf_area *voa; /* Area wich the vlink goes through */
u16 autype;
- u8 aukey[8];
u8 options;
+ list *passwords;
+ u32 csn; /* Crypt seq num. that will be sent net */
ip_addr drip; /* Designated router */
u32 drid;
ip_addr bdrip; /* Backup DR */
@@ -168,6 +168,20 @@ struct ospf_iface
list nbma_list;
};
+struct ospf_md5
+{
+ u16 zero;
+ u8 keyid;
+ u8 len;
+ u32 csn;
+};
+
+union ospf_auth
+{
+ u8 password[8];
+ struct ospf_md5 md5;
+};
+
struct ospf_packet
{
u8 version;
@@ -183,7 +197,7 @@ struct ospf_packet
#define BACKBONE 0
u16 checksum;
u16 autype;
- u8 authetication[8];
+ union ospf_auth u;
};
struct ospf_hello_packet
@@ -437,6 +451,7 @@ struct ospf_neighbor
#define ACKL_DIRECT 0
#define ACKL_DELAY 1
timer *ackd_timer; /* Delayed ack timer */
+ u32 csn; /* Last received crypt seq number (for MD5) */
};
/* Definitions for interface state machine */
@@ -512,11 +527,11 @@ struct ospf_iface_patt
u32 strictnbma;
u32 stub;
u32 vid;
-/* must be in network byte order */
-#define AU_NONE htons(0)
-#define AU_SIMPLE htons(1)
-#define AU_CRYPT htons(2)
- u8 password[8];
+#define OSPF_AUTH_NONE 0
+#define OSPF_AUTH_SIMPLE 1
+#define OSPF_AUTH_CRYPT 2
+#define OSPF_AUTH_CRYPT_SIZE 16
+ list *passwords;
list nbma_list;
};