1 /* SPDX-License-Identifier: GPL-2.0 */ 2 #ifndef _NFOSF_H 3 #define _NFOSF_H 4 5 #include <uapi/linux/netfilter/nfnetlink_osf.h> 6 7 enum osf_fmatch_states { 8 /* Packet does not match the fingerprint */ 9 FMATCH_WRONG = 0, 10 /* Packet matches the fingerprint */ 11 FMATCH_OK, 12 /* Options do not match the fingerprint, but header does */ 13 FMATCH_OPT_WRONG, 14 }; 15 16 extern struct list_head nf_osf_fingers[2]; 17 18 struct nf_osf_finger { 19 struct rcu_head rcu_head; 20 struct list_head finger_entry; 21 struct nf_osf_user_finger finger; 22 }; 23 24 struct nf_osf_data { 25 const char *genre; 26 const char *version; 27 }; 28 29 bool nf_osf_match(const struct sk_buff *skb, u_int8_t family, 30 int hooknum, struct net_device *in, struct net_device *out, 31 const struct nf_osf_info *info, struct net *net, 32 const struct list_head *nf_osf_fingers); 33 34 bool nf_osf_find(const struct sk_buff *skb, 35 const struct list_head *nf_osf_fingers, 36 const int ttl_check, struct nf_osf_data *data); 37 38 #endif /* _NFOSF_H */ 39