Home | History | Annotate | Download | only in lib

Lines Matching refs:rta

557 	struct rtattr *rta;
563 rta = NLMSG_TAIL(n);
564 rta->rta_type = type;
565 rta->rta_len = len;
566 memcpy(RTA_DATA(rta), data, alen);
617 int rta_addattr32(struct rtattr *rta, int maxlen, int type, __u32 data)
622 if (RTA_ALIGN(rta->rta_len) + len > maxlen) {
626 subrta = (struct rtattr*)(((char*)rta) + RTA_ALIGN(rta->rta_len));
630 rta->rta_len = NLMSG_ALIGN(rta->rta_len) + len;
634 int rta_addattr_l(struct rtattr *rta, int maxlen, int type,
640 if (RTA_ALIGN(rta->rta_len) + RTA_ALIGN(len) > maxlen) {
644 subrta = (struct rtattr*)(((char*)rta) + RTA_ALIGN(rta->rta_len));
648 rta->rta_len = NLMSG_ALIGN(rta->rta_len) + RTA_ALIGN(len);
652 int parse_rtattr(struct rtattr *tb[], int max, struct rtattr *rta, int len)
655 while (RTA_OK(rta, len)) {
656 if ((rta->rta_type <= max) && (!tb[rta->rta_type]))
657 tb[rta->rta_type] = rta;
658 rta = RTA_NEXT(rta,len);
661 fprintf(stderr, "!!!Deficit %d, rta_len=%d\n", len, rta->rta_len);
665 int parse_rtattr_byindex(struct rtattr *tb[], int max, struct rtattr *rta, int len)
670 while (RTA_OK(rta, len)) {
671 if (rta->rta_type <= max && i < max)
672 tb[i++] = rta;
673 rta = RTA_NEXT(rta,len);
676 fprintf(stderr, "!!!Deficit %d, rta_len=%d\n", len, rta->rta_len);
680 int __parse_rtattr_nested_compat(struct rtattr *tb[], int max, struct rtattr *rta,
683 if (RTA_PAYLOAD(rta) < len)
685 if (RTA_PAYLOAD(rta) >= RTA_ALIGN(len) + sizeof(struct rtattr)) {
686 rta = RTA_DATA(rta) + RTA_ALIGN(len);
687 return parse_rtattr_nested(tb, max, rta);