Hi all,

I meet problem when I run the example CN script in the upgraded mip6 kernel.  The program fails at rtnl_xfrm_do() in xfrm_state_add() when initializing.  Is this a reported bug or I have some problem in the system configuration?

Thanks!

Liang Chen

static int xfrm_state_add(const struct xfrm_selector *sel,
                          int proto, const struct in6_addr *coa,
                          int update, uint8_t flags)
{
        uint8_t buf[256];
        struct nlmsghdr *n;
        struct xfrm_usersa_info *sa;
        int err;
    
        memset(buf, 0, sizeof(buf));
        n = (struct nlmsghdr *)buf;
        n->nlmsg_len = NLMSG_LENGTH(sizeof(struct xfrm_usersa_info));
        if (update) {
                n->nlmsg_flags = NLM_F_REQUEST | NLM_F_REPLACE;
                n->nlmsg_type = XFRM_MSG_UPDSA;
        } else {
                n->nlmsg_flags = NLM_F_REQUEST | NLM_F_CREATE;
                n->nlmsg_type = XFRM_MSG_NEWSA;
        }
        sa = NLMSG_DATA(n);
        memcpy(&sa->sel, sel, sizeof(struct xfrm_selector));
        /* State src and dst addresses */
        memcpy(sa->id.daddr.a6, sel-> daddr.a6, sizeof(sel->daddr.a6));
        sa->id.proto = proto;
        memcpy(sa->saddr.a6, sel->saddr.a6, sizeof(sel->saddr.a6));
        xfrm_lft(&sa->lft);
        sa->family = AF_INET6;
        sa->mode = XFRM_MODE_ROUTEOPTIMIZATION;
        sa->flags = flags;
    
        addattr_l(n, sizeof(buf), XFRMA_ADDR, coa, sizeof(struct in6_addr));
    
         if ((err = rtnl_xfrm_do(n, NULL)) < 0)
                xfrm_state_dump("Failed to add state:\n",
                                 n->nlmsg_flags, n->nlmsg_type, sa, coa);
        return err;
}
    
_______________________________________________
mipl mailing list
[email protected]
http://www.mobile-ipv6.org/cgi-bin/mailman/listinfo/mipl

Reply via email to