1390
1391static struct dst_entry *xfrm_bundle_create(struct xfrm_policy *policy,
1392 struct xfrm_state **xfrm, int nx,
1393 struct flowi *fl,
1394 struct dst_entry *dst)
1395{
1396 unsigned long now = jiffies;
1397 struct net_device *dev;
1398 struct dst_entry *dst_prev = NULL;
1399 struct dst_entry *dst0 = NULL;
1400 int i = 0;
1401 int err;
1402 int header_len = 0;
1403 int nfheader_len = 0;
1404 int trailer_len = 0;
1405 int tos;
1406 int family = policy->selector.family;
1407 xfrm_address_t saddr, daddr;
1408
1409 xfrm_flowi_addr_get(fl, &saddr, &daddr, family);
1410
1411 tos = xfrm_get_tos(fl, family);
1412 err = tos;
1413 if (tos < 0)
1414 goto put_states;
1415
1416 dst_hold(dst);
1417
1418 for (; i < nx; i++) {
1419 struct xfrm_dst *xdst = xfrm_alloc_dst(family);
1420 struct dst_entry *dst1 = &xdst->u.dst;
1421
1422 err = PTR_ERR(xdst);
1423 if (IS_ERR(xdst)) {
1424 dst_release(dst);
1425 goto put_states;
1426 }
1427
1428 if (!dst_prev)
1429 dst0 = dst1;
1430 else {