Lines Matching refs:skb
623 extern int rtnetlink_send(struct sk_buff *skb, struct net *net, u32 pid, u32 group, int echo);
624 extern int rtnl_unicast(struct sk_buff *skb, struct net *net, u32 pid);
625 extern void rtnl_notify(struct sk_buff *skb, struct net *net, u32 pid,
628 extern int rtnetlink_put_metrics(struct sk_buff *skb, u32 *metrics);
629 extern int rtnl_put_cacheinfo(struct sk_buff *skb, struct dst_entry *dst,
633 extern void __rta_fill(struct sk_buff *skb, int attrtype, int attrlen, const void *data);
635 #define RTA_PUT(skb, attrtype, attrlen, data) \ argument
636 ({ if (unlikely(skb_tailroom(skb) < (int)RTA_SPACE(attrlen))) \
638 __rta_fill(skb, attrtype, attrlen, data); })
640 #define RTA_APPEND(skb, attrlen, data) \ argument
641 ({ if (unlikely(skb_tailroom(skb) < (int)(attrlen))) \
643 memcpy(skb_put(skb, attrlen), data, attrlen); })
645 #define RTA_PUT_NOHDR(skb, attrlen, data) \ argument
646 ({ RTA_APPEND(skb, RTA_ALIGN(attrlen), data); \
647 memset(skb_tail_pointer(skb) - (RTA_ALIGN(attrlen) - attrlen), 0, \
650 #define RTA_PUT_U8(skb, attrtype, value) \ argument
652 RTA_PUT(skb, attrtype, sizeof(u8), &_tmp); })
654 #define RTA_PUT_U16(skb, attrtype, value) \ argument
656 RTA_PUT(skb, attrtype, sizeof(u16), &_tmp); })
658 #define RTA_PUT_U32(skb, attrtype, value) \ argument
660 RTA_PUT(skb, attrtype, sizeof(u32), &_tmp); })
662 #define RTA_PUT_U64(skb, attrtype, value) \ argument
664 RTA_PUT(skb, attrtype, sizeof(u64), &_tmp); })
666 #define RTA_PUT_SECS(skb, attrtype, value) \ argument
667 RTA_PUT_U64(skb, attrtype, (value) / HZ)
669 #define RTA_PUT_MSECS(skb, attrtype, value) \ argument
670 RTA_PUT_U64(skb, attrtype, jiffies_to_msecs(value))
672 #define RTA_PUT_STRING(skb, attrtype, value) \ argument
673 RTA_PUT(skb, attrtype, strlen(value) + 1, value)
675 #define RTA_PUT_FLAG(skb, attrtype) \ argument
676 RTA_PUT(skb, attrtype, 0, NULL);
678 #define RTA_NEST(skb, type) \ argument
679 ({ struct rtattr *__start = (struct rtattr *)skb_tail_pointer(skb); \
680 RTA_PUT(skb, type, 0, NULL); \
683 #define RTA_NEST_END(skb, start) \ argument
684 ({ (start)->rta_len = skb_tail_pointer(skb) - (unsigned char *)(start); \
685 (skb)->len; })
687 #define RTA_NEST_COMPAT(skb, type, attrlen, data) \ argument
688 ({ struct rtattr *__start = (struct rtattr *)skb_tail_pointer(skb); \
689 RTA_PUT(skb, type, attrlen, data); \
690 RTA_NEST(skb, type); \
693 #define RTA_NEST_COMPAT_END(skb, start) \ argument
695 (start)->rta_len = skb_tail_pointer(skb) - (unsigned char *)(start); \
696 RTA_NEST_END(skb, __nest); \
697 (skb)->len; })
699 #define RTA_NEST_CANCEL(skb, start) \ argument
701 skb_trim(skb, (unsigned char *) (start) - (skb)->data); \
732 __rta_reserve(struct sk_buff *skb, int attrtype, int attrlen) in __rta_reserve() argument
737 rta = (struct rtattr*)skb_put(skb, RTA_ALIGN(size)); in __rta_reserve()
744 #define __RTA_PUT(skb, attrtype, attrlen) \ argument
745 ({ if (unlikely(skb_tailroom(skb) < (int)RTA_SPACE(attrlen))) \
747 __rta_reserve(skb, attrtype, attrlen); })