diff -ur keepalived-1.1.19.v6.neighbor.advertisement/keepalived/include/vrrp_ipaddress.h keepalived-1.1.19.v6.neighbor.advertisement.routerflag/keepalived/include/vrrp_ipaddress.h --- keepalived-1.1.19.v6.neighbor.advertisement/keepalived/include/vrrp_ipaddress.h 2010-04-14 14:02:14.485498149 +0200 +++ keepalived-1.1.19.v6.neighbor.advertisement.routerflag/keepalived/include/vrrp_ipaddress.h 2010-04-16 13:55:17.228645812 +0200 @@ -35,10 +35,13 @@ #include "list.h" #include "vector.h" + + /* types definition */ typedef struct { uint32_t addr; /* the ip address */ struct in6_addr addrv6; /* the ip v6 address */ + int ngbadv_router; /* Flag for neighbor advertissment */ uint32_t broadcast; /* the broadcast address */ uint8_t mask; /* the ip address CIDR netmask */ int ifindex; /* Interface index owning IP address */ diff -ur keepalived-1.1.19.v6.neighbor.advertisement/keepalived/vrrp/vrrp_icmp6.c keepalived-1.1.19.v6.neighbor.advertisement.routerflag/keepalived/vrrp/vrrp_icmp6.c --- keepalived-1.1.19.v6.neighbor.advertisement/keepalived/vrrp/vrrp_icmp6.c 2010-04-14 14:03:27.250526043 +0200 +++ keepalived-1.1.19.v6.neighbor.advertisement.routerflag/keepalived/vrrp/vrrp_icmp6.c 2010-04-16 13:57:02.644918484 +0200 @@ -118,6 +118,8 @@ /* ICMP6 */ icmp6->type = 136; icmp6->override = 1; + if ( ipaddress->ngbadv_router ) + icmp6->router = 1; memcpy(&icmp6->target, &ipaddress->addrv6, sizeof(struct in6_addr)); icmp6->opt_header[0] = 2; icmp6->opt_header[1] = 1; diff -ur keepalived-1.1.19.v6.neighbor.advertisement/keepalived/vrrp/vrrp_ipaddress.c keepalived-1.1.19.v6.neighbor.advertisement.routerflag/keepalived/vrrp/vrrp_ipaddress.c --- keepalived-1.1.19.v6.neighbor.advertisement/keepalived/vrrp/vrrp_ipaddress.c 2010-04-14 14:02:14.493498049 +0200 +++ keepalived-1.1.19.v6.neighbor.advertisement.routerflag/keepalived/vrrp/vrrp_ipaddress.c 2010-04-16 13:56:28.316644215 +0200 @@ -159,6 +159,8 @@ } else if (!strcmp(str, "label")) { new->label = MALLOC(IFNAMSIZ); strncpy(new->label, VECTOR_SLOT(strvec, ++i), IFNAMSIZ); + } else if (!strcmp(str, "router")) { + new->ngbadv_router = 1; } else { char *p;