diff --git a/zebra/irdp.h b/zebra/irdp.h
index 0fad581..2bf17f0 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 @@
      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 */
+     Default: 600 seconds 
 
-  unsigned long MaxAdvertisementInterval;
-
-  /* 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 */
+     Default: 0.75 * MaxAdvertisementInterval 
 
-  unsigned long MinAdvertisementInterval;
-
-
-  /* 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 */
+     Default: 3 * MaxAdvertisementInterval 
 
-  unsigned long AdvertisementLifetime;
-
-  /* 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 */
+     Default: 0 
+*/
 
-  unsigned long PreferenceLevel;
-};
-
-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;
+
+#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) 
+
+  struct interface *ifp;
+  struct thread *t_advertise;
+  unsigned long irdp_sent;
+  u_int16_t Lifetime;
+
+ list AdvPrefList;
+
 };
 
-
-/* Route preference structure */
-struct irdp 
+struct Adv 
 {
-  struct in_addr prefix;
-  long pref;		/* preference level */
-  long timer;			/* lifetime timer */
-
-  struct irdp *next;		/* doubly linked list */
-  struct irdp *prev;		/* doubly linked list */
+  struct in_addr ip;
+  int pref;
 };
 
-/* Default irdp packet interval */
-#define IRDP_DEFAULT_INTERVAL 300
+void irdp_init();
+void irdp_finish();
+void irdp_config_write (struct vty *, struct interface *);
+#endif /* _IRDP_H */
 
-/* Router constants from RFC1256 */
-#define MAX_INITIAL_ADVERT_INTERVAL 16
-#define MAX_INITIAL_ADVERTISEMENTS   3
-#define MAX_RESPONSE_DELAY           2
 
-/* Host constants from RFC1256 */
-#define MAX_SOLICITATION_DELAY       1
-#define SOLICITATION_INTERVAL        3
-#define MAX_SOLICITATIONS            3
 
-enum
-{
-  IRDP_NONE,
-  IRDP_ROUTER,
-  IRDP_HOST,
-};
 
-/* default is host mode */
-extern int irdp_mode;
+
