/* * net/sched/act_meta_prio.c IFE skb->priority metadata module * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version * 2 of the License, or (at your option) any later version. * * copyright Jamal Hadi Salim (2015) * */ #include #include #include #include #include #include #include #include #include #include #include #include static int skbprio_check(struct sk_buff *skb, struct tcf_meta_info *e) { return ife_check_meta_u32(skb->priority, e); } static int skbprio_encode(struct sk_buff *skb, void *skbdata, struct tcf_meta_info *e) { u32 ifeprio = skb->priority; /* avoid having to cast skb->priority*/ return ife_encode_meta_u32(ifeprio, skbdata, e); } static int skbprio_decode(struct sk_buff *skb, void *data, u16 len) { u32 ifeprio = *(u32 *)data; skb->priority = ntohl(ifeprio); return 0; } static struct tcf_meta_ops ife_prio_ops = { .metaid = IFE_META_PRIO, .metatype = NLA_U32, .name = "skbprio", .synopsis = "skb prio metadata", .check_presence = skbprio_check, .encode = skbprio_encode, .decode = skbprio_decode, .get = ife_get_meta_u32, .alloc = ife_alloc_meta_u32, .owner = THIS_MODULE, }; static int __init ifeprio_init_module(void) { return register_ife_op(&ife_prio_ops); } static void __exit ifeprio_cleanup_module(void) { unregister_ife_op(&ife_prio_ops); } module_init(ifeprio_init_module); module_exit(ifeprio_cleanup_module); MODULE_AUTHOR("Jamal Hadi Salim(2015)"); MODULE_DESCRIPTION("Inter-FE skb prio metadata action"); MODULE_LICENSE("GPL"); MODULE_ALIAS_IFE_META(IFE_META_PRIO); inux/net-next.git/commit/include/net/netlink.h?id=bb4005bae3dab0dd21b239b1da193053151c07ba'>commitdiff
AgeCommit message (Collapse)AuthorFilesLines
2017-02-04net: ipv6: Change notifications for multipath add to RTA_MULTIPATHDavid Ahern1-0/+1
Change ip6_route_multipath_add to send one notifciation with the full route encoded with RTA_MULTIPATH instead of a series of individual routes. This is done by adding a skip_notify flag to the nl_info struct. The flag is used to skip sending of the notification in the fib code that actually inserts the route. Once the full route has been added, a notification is generated with all nexthops. ip6_route_multipath_add handles 3 use cases: new routes, route replace, and route append. The multipath notification generated needs to be consistent with the order of the nexthops and it should be consistent with the order in a FIB dump which means the route with the first nexthop needs to be used as the route reference. For the first 2 cases (new and replace), a reference to the route used to send the notification is obtained by saving the first route added. For the append case, the last route added is used to loop back to its first sibling route which is the first nexthop in the multipath route. Signed-off-by: David Ahern <dsa@cumulusnetworks.com> Signed-off-by: David S. Miller <davem@davemloft.net>