Default: 1
 
+accept_ra_min_rtr_lft - INTEGER
+       Minimum acceptable router lifetime in Router Advertisement.
+
+       RAs with a router lifetime less than this value shall be
+       ignored. RAs with a router lifetime of 0 are unaffected.
+
+       Default: 0
+
 accept_ra_pinfo - BOOLEAN
        Learn Prefix Information in Router Advertisement.
 
 
        __s32           accept_ra_defrtr;
        __u32           ra_defrtr_metric;
        __s32           accept_ra_min_hop_limit;
+       __s32           accept_ra_min_rtr_lft;
        __s32           accept_ra_pinfo;
        __s32           ignore_routes_with_linkdown;
 #ifdef CONFIG_IPV6_ROUTER_PREF
 
        DEVCONF_IOAM6_ID_WIDE,
        DEVCONF_NDISC_EVICT_NOCARRIER,
        DEVCONF_ACCEPT_UNTRACKED_NA,
+       DEVCONF_ACCEPT_RA_MIN_RTR_LFT,
        DEVCONF_MAX
 };
 
 
        .ra_defrtr_metric       = IP6_RT_PRIO_USER,
        .accept_ra_from_local   = 0,
        .accept_ra_min_hop_limit= 1,
+       .accept_ra_min_rtr_lft  = 0,
        .accept_ra_pinfo        = 1,
 #ifdef CONFIG_IPV6_ROUTER_PREF
        .accept_ra_rtr_pref     = 1,
        .ra_defrtr_metric       = IP6_RT_PRIO_USER,
        .accept_ra_from_local   = 0,
        .accept_ra_min_hop_limit= 1,
+       .accept_ra_min_rtr_lft  = 0,
        .accept_ra_pinfo        = 1,
 #ifdef CONFIG_IPV6_ROUTER_PREF
        .accept_ra_rtr_pref     = 1,
        array[DEVCONF_IOAM6_ID_WIDE] = cnf->ioam6_id_wide;
        array[DEVCONF_NDISC_EVICT_NOCARRIER] = cnf->ndisc_evict_nocarrier;
        array[DEVCONF_ACCEPT_UNTRACKED_NA] = cnf->accept_untracked_na;
+       array[DEVCONF_ACCEPT_RA_MIN_RTR_LFT] = cnf->accept_ra_min_rtr_lft;
 }
 
 static inline size_t inet6_ifla6_size(void)
                .mode           = 0644,
                .proc_handler   = proc_dointvec,
        },
+       {
+               .procname       = "accept_ra_min_rtr_lft",
+               .data           = &ipv6_devconf.accept_ra_min_rtr_lft,
+               .maxlen         = sizeof(int),
+               .mode           = 0644,
+               .proc_handler   = proc_dointvec,
+       },
        {
                .procname       = "accept_ra_pinfo",
                .data           = &ipv6_devconf.accept_ra_pinfo,
 
        if (!ndisc_parse_options(skb->dev, opt, optlen, &ndopts))
                return SKB_DROP_REASON_IPV6_NDISC_BAD_OPTIONS;
 
+       lifetime = ntohs(ra_msg->icmph.icmp6_rt_lifetime);
+
        if (!ipv6_accept_ra(in6_dev)) {
                ND_PRINTK(2, info,
                          "RA: %s, did not accept ra for dev: %s\n",
                goto skip_linkparms;
        }
 
+       if (lifetime != 0 && lifetime < in6_dev->cnf.accept_ra_min_rtr_lft) {
+               ND_PRINTK(2, info,
+                         "RA: router lifetime (%ds) is too short: %s\n",
+                         lifetime, skb->dev->name);
+               goto skip_linkparms;
+       }
+
 #ifdef CONFIG_IPV6_NDISC_NODETYPE
        /* skip link-specific parameters from interior routers */
        if (skb->ndisc_nodetype == NDISC_NODETYPE_NODEFAULT) {
                goto skip_defrtr;
        }
 
-       lifetime = ntohs(ra_msg->icmph.icmp6_rt_lifetime);
-
 #ifdef CONFIG_IPV6_ROUTER_PREF
        pref = ra_msg->icmph.icmp6_router_pref;
        /* 10b is handled as if it were 00b (medium) */
                goto out;
        }
 
+       if (lifetime != 0 && lifetime < in6_dev->cnf.accept_ra_min_rtr_lft) {
+               ND_PRINTK(2, info,
+                         "RA: router lifetime (%ds) is too short: %s\n",
+                         lifetime, skb->dev->name);
+               goto out;
+       }
+
 #ifdef CONFIG_IPV6_ROUTE_INFO
        if (!in6_dev->cnf.accept_ra_from_local &&
            ipv6_chk_addr(dev_net(in6_dev->dev), &ipv6_hdr(skb)->saddr,