• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /netgear-WNDR4500-V1.0.1.40_1.0.68/src/linux/linux-2.6/net/decnet/

Lines Matching refs:rta

158 static int dn_fib_count_nhs(struct rtattr *rta)
161 struct rtnexthop *nhp = RTA_DATA(rta);
162 int nhlen = RTA_PAYLOAD(rta);
174 static int dn_fib_get_nhs(struct dn_fib_info *fi, const struct rtattr *rta, const struct rtmsg *r)
176 struct rtnexthop *nhp = RTA_DATA(rta);
177 int nhlen = RTA_PAYLOAD(rta);
272 struct dn_fib_info *dn_fib_create_info(const struct rtmsg *r, struct dn_kern_rta *rta, const struct nlmsghdr *nlh, int *errp)
285 if (rta->rta_mp) {
286 nhs = dn_fib_count_nhs(rta->rta_mp);
299 if (rta->rta_priority)
300 fi->fib_priority = *rta->rta_priority;
301 if (rta->rta_mx) {
302 int attrlen = RTA_PAYLOAD(rta->rta_mx);
303 struct rtattr *attr = RTA_DATA(rta->rta_mx);
315 if (rta->rta_prefsrc)
316 memcpy(&fi->fib_prefsrc, rta->rta_prefsrc, 2);
318 if (rta->rta_mp) {
319 if ((err = dn_fib_get_nhs(fi, rta->rta_mp, r)) != 0)
321 if (rta->rta_oif && fi->fib_nh->nh_oif != *rta->rta_oif)
323 if (rta->rta_gw && memcmp(&fi->fib_nh->nh_gw, rta->rta_gw, 2))
327 if (rta->rta_oif)
328 nh->nh_oif = *rta->rta_oif;
329 if (rta->rta_gw)
330 memcpy(&nh->nh_gw, rta->rta_gw, 2);
336 if (rta->rta_gw == NULL || nhs != 1 || rta->rta_oif)
338 memcpy(&fi->fib_nh->nh_gw, rta->rta_gw, 2);
343 if (rta->rta_gw || rta->rta_oif || rta->rta_mp)
370 if (r->rtm_type != RTN_LOCAL || rta->rta_dst == NULL ||
371 memcmp(&fi->fib_prefsrc, rta->rta_dst, 2))
489 static int dn_fib_check_attr(struct rtmsg *r, struct rtattr **rta)
494 struct rtattr *attr = rta[i-1];
500 rta[i-1] = (struct rtattr *)RTA_DATA(attr);
510 struct rtattr **rta = arg;
513 if (dn_fib_check_attr(r, rta))
516 tb = dn_fib_get_table(rtm_get_table(rta, r->rtm_table), 0);
518 return tb->delete(tb, r, (struct dn_kern_rta *)rta, nlh, &NETLINK_CB(skb));
526 struct rtattr **rta = arg;
529 if (dn_fib_check_attr(r, rta))
532 tb = dn_fib_get_table(rtm_get_table(rta, r->rtm_table), 1);
534 return tb->insert(tb, r, (struct dn_kern_rta *)rta, nlh, &NETLINK_CB(skb));
546 struct dn_kern_rta rta;
549 memset(&rta, 0, sizeof(rta));
571 rta.rta_dst = &dst;
572 rta.rta_prefsrc = &ifa->ifa_local;
573 rta.rta_oif = &ifa->ifa_dev->dev->ifindex;
576 tb->insert(tb, &req.rtm, &rta, &req.nlh, NULL);
578 tb->delete(tb, &req.rtm, &rta, &req.nlh, NULL);