summaryrefslogtreecommitdiff
path: root/zebra/irdp.h
diff options
context:
space:
mode:
Diffstat (limited to 'zebra/irdp.h')
-rw-r--r--zebra/irdp.h151
1 files changed, 78 insertions, 73 deletions
diff --git a/zebra/irdp.h b/zebra/irdp.h
index 0fad581d..2bf17f07 100644
--- a/zebra/irdp.h
+++ b/zebra/irdp.h
@@ -19,6 +19,19 @@
* 02111-1307, USA.
*/
+/*
+ * This file is modified and completed for the Zebra IRDP implementation
+ * by Robert Olsson, Swedish University of Agricultural Sciences
+ */
+
+#ifndef _IRDP_H
+#define _IRDP_H
+
+#include "lib/vty.h"
+
+#define TRUE 1
+#define FALSE 0
+
/* ICMP Messages */
#ifndef ICMP_ROUTERADVERT
#define ICMP_ROUTERADVERT 9
@@ -30,17 +43,36 @@
/* Multicast groups */
#ifndef INADDR_ALLHOSTS_GROUP
-#define INADDR_ALLHOSTS_GROUP 0xe0000001 /* 224.0.0.1 */
+#define INADDR_ALLHOSTS_GROUP 0xe0000001U /* 224.0.0.1 */
#endif /* INADDR_ALLHOSTS_GROUP */
#ifndef INADDR_ALLRTRS_GROUP
-#define INADDR_ALLRTRS_GROUP 0xe0000002 /* 224.0.0.2 */
+#define INADDR_ALLRTRS_GROUP 0xe0000002U /* 224.0.0.2 */
#endif /* INADDR_ALLRTRS_GROUP */
-/* Comments comes from RFC1256 ICMP Router Discovery Messages. */
-struct irdp_router_interface
-{
- /* The IP destination address to be used for multicast Router
+/* Default irdp packet interval */
+#define IRDP_DEFAULT_INTERVAL 300
+
+/* Router constants from RFC1256 */
+#define MAX_INITIAL_ADVERT_INTERVAL 16
+#define MAX_INITIAL_ADVERTISEMENTS 3
+#define MAX_RESPONSE_DELAY 2
+
+#define IRDP_MAXADVERTINTERVAL 600
+#define IRDP_MINADVERTINTERVAL 450 /* 0.75*600 */
+#define IRDP_LIFETIME 1350 /* 3*450 */
+#define IRDP_PREFERENCE 0
+
+#define ICMP_MINLEN 8
+
+#define IRDP_LAST_ADVERT_MESSAGES 2 /* The last adverts with Holdtime 0 */
+
+#define IRDP_RX_BUF 1500
+
+/*
+ Comments comes from RFC1256 ICMP Router Discovery Messages.
+
+ The IP destination address to be used for multicast Router
Advertisements sent from the interface. The only permissible
values are the all-systems multicast address, 224.0.0.1, or the
limited-broadcast address, 255.255.255.255. (The all-systems
@@ -48,101 +80,74 @@ struct irdp_router_interface
all listening hosts support IP multicast.)
Default: 224.0.0.1 if the router supports IP multicast on the
- interface, else 255.255.255.255 */
+ interface, else 255.255.255.255
- struct in_addr AdvertisementAddress;
-
- /* The maximum time allowed between sending multicast Router
+ The maximum time allowed between sending multicast Router
Advertisements from the interface, in seconds. Must be no less
than 4 seconds and no greater than 1800 seconds.
- Default: 600 seconds */
-
- unsigned long MaxAdvertisementInterval;
+ Default: 600 seconds
- /* The minimum time allowed between sending unsolicited multicast
+ The minimum time allowed between sending unsolicited multicast
Router Advertisements from the interface, in seconds. Must be no
less than 3 seconds and no greater than MaxAdvertisementInterval.
- Default: 0.75 * MaxAdvertisementInterval */
-
- unsigned long MinAdvertisementInterval;
+ Default: 0.75 * MaxAdvertisementInterval
-
- /* The value to be placed in the Lifetime field of Router
+ The value to be placed in the Lifetime field of Router
Advertisements sent from the interface, in seconds. Must be no
less than MaxAdvertisementInterval and no greater than 9000
seconds.
- Default: 3 * MaxAdvertisementInterval */
-
- unsigned long AdvertisementLifetime;
+ Default: 3 * MaxAdvertisementInterval
- /* A flag indicating whether or not the address is to be advertised.
-
- Default: TRUE */
-
- int Advertise;
-
-
- /* The preferability of the address as a default router address,
+ The preferability of the address as a default router address,
relative to other router addresses on the same subnet. A 32-bit,
signed, twos-complement integer, with higher values meaning more
preferable. The minimum value (hex 80000000) is used to indicate
that the address, even though it may be advertised, is not to be
used by neighboring hosts as a default router address.
- Default: 0 */
-
- unsigned long PreferenceLevel;
-};
+ Default: 0
+*/
-struct irdp_host_interface
+struct irdp_interface
{
- /* A flag indicating whether or not the host is to perform ICMP router
- discovery on the interface. */
- int PerformRouerDiscovery;
-
- /* The IP destination address to be used for sending Router
- Solicitations from the interface. The only permissible values
- are the all-routers multicast address, 224.0.0.2, or the
- limited-broadcast address, 255.255.255.255. (The all-routers
- address is preferred wherever possible, i.e., on any link where
- all advertising routers support IP multicast.) */
- unsigned long SolicitationAddress;
-};
+ unsigned long MaxAdvertInterval;
+ unsigned long MinAdvertInterval;
+ unsigned long Preference;
+ u_int32_t flags;
-/* Route preference structure */
-struct irdp
-{
- struct in_addr prefix;
- long pref; /* preference level */
- long timer; /* lifetime timer */
-
- struct irdp *next; /* doubly linked list */
- struct irdp *prev; /* doubly linked list */
-};
+#define IF_ACTIVE (1<<0) /* ICMP Active */
+#define IF_BROADCAST (1<<1) /* 255.255.255.255 */
+#define IF_SOLICIT (1<<2) /* Solicit active */
+#define IF_DEBUG_MESSAGES (1<<3)
+#define IF_DEBUG_PACKET (1<<4)
+#define IF_DEBUG_MISC (1<<5)
+#define IF_SHUTDOWN (1<<6)
-/* Default irdp packet interval */
-#define IRDP_DEFAULT_INTERVAL 300
+ struct interface *ifp;
+ struct thread *t_advertise;
+ unsigned long irdp_sent;
+ u_int16_t Lifetime;
-/* Router constants from RFC1256 */
-#define MAX_INITIAL_ADVERT_INTERVAL 16
-#define MAX_INITIAL_ADVERTISEMENTS 3
-#define MAX_RESPONSE_DELAY 2
+ list AdvPrefList;
-/* Host constants from RFC1256 */
-#define MAX_SOLICITATION_DELAY 1
-#define SOLICITATION_INTERVAL 3
-#define MAX_SOLICITATIONS 3
+};
-enum
+struct Adv
{
- IRDP_NONE,
- IRDP_ROUTER,
- IRDP_HOST,
+ struct in_addr ip;
+ int pref;
};
-/* default is host mode */
-extern int irdp_mode;
+void irdp_init();
+void irdp_finish();
+void irdp_config_write (struct vty *, struct interface *);
+#endif /* _IRDP_H */
+
+
+
+
+