1*33f11d16STom Herbert /* 2*33f11d16STom Herbert * Copyright (c) 2015 Tom Herbert <tom@herbertland.com> 3*33f11d16STom Herbert * 4*33f11d16STom Herbert * This program is free software; you can redistribute it and/or 5*33f11d16STom Herbert * modify it under the terms of the GNU General Public License as 6*33f11d16STom Herbert * published by the Free Software Foundation; either version 2 of 7*33f11d16STom Herbert * the License, or (at your option) any later version. 8*33f11d16STom Herbert * 9*33f11d16STom Herbert */ 10*33f11d16STom Herbert 11*33f11d16STom Herbert #ifndef __ILA_H 12*33f11d16STom Herbert #define __ILA_H 13*33f11d16STom Herbert 14*33f11d16STom Herbert #include <linux/errno.h> 15*33f11d16STom Herbert #include <linux/ip.h> 16*33f11d16STom Herbert #include <linux/kernel.h> 17*33f11d16STom Herbert #include <linux/module.h> 18*33f11d16STom Herbert #include <linux/socket.h> 19*33f11d16STom Herbert #include <linux/skbuff.h> 20*33f11d16STom Herbert #include <linux/types.h> 21*33f11d16STom Herbert #include <net/checksum.h> 22*33f11d16STom Herbert #include <net/ip.h> 23*33f11d16STom Herbert #include <net/protocol.h> 24*33f11d16STom Herbert #include <uapi/linux/ila.h> 25*33f11d16STom Herbert 26*33f11d16STom Herbert struct ila_params { 27*33f11d16STom Herbert __be64 locator; 28*33f11d16STom Herbert __be64 locator_match; 29*33f11d16STom Herbert __wsum csum_diff; 30*33f11d16STom Herbert }; 31*33f11d16STom Herbert 32*33f11d16STom Herbert static inline __wsum compute_csum_diff8(const __be32 *from, const __be32 *to) 33*33f11d16STom Herbert { 34*33f11d16STom Herbert __be32 diff[] = { 35*33f11d16STom Herbert ~from[0], ~from[1], to[0], to[1], 36*33f11d16STom Herbert }; 37*33f11d16STom Herbert 38*33f11d16STom Herbert return csum_partial(diff, sizeof(diff), 0); 39*33f11d16STom Herbert } 40*33f11d16STom Herbert 41*33f11d16STom Herbert void update_ipv6_locator(struct sk_buff *skb, struct ila_params *p); 42*33f11d16STom Herbert 43*33f11d16STom Herbert int ila_lwt_init(void); 44*33f11d16STom Herbert void ila_lwt_fini(void); 45*33f11d16STom Herbert 46*33f11d16STom Herbert #endif /* __ILA_H */ 47