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
