Back to home page

OSCL-LXR

 
 

    


0001 /* SPDX-License-Identifier: GPL-2.0 */
0002 #ifndef _NFOSF_H
0003 #define _NFOSF_H
0004 
0005 #include <uapi/linux/netfilter/nfnetlink_osf.h>
0006 
0007 enum osf_fmatch_states {
0008     /* Packet does not match the fingerprint */
0009     FMATCH_WRONG = 0,
0010     /* Packet matches the fingerprint */
0011     FMATCH_OK,
0012     /* Options do not match the fingerprint, but header does */
0013     FMATCH_OPT_WRONG,
0014 };
0015 
0016 extern struct list_head nf_osf_fingers[2];
0017 
0018 struct nf_osf_finger {
0019     struct rcu_head         rcu_head;
0020     struct list_head        finger_entry;
0021     struct nf_osf_user_finger   finger;
0022 };
0023 
0024 struct nf_osf_data {
0025     const char *genre;
0026     const char *version;
0027 };
0028 
0029 bool nf_osf_match(const struct sk_buff *skb, u_int8_t family,
0030           int hooknum, struct net_device *in, struct net_device *out,
0031           const struct nf_osf_info *info, struct net *net,
0032           const struct list_head *nf_osf_fingers);
0033 
0034 bool nf_osf_find(const struct sk_buff *skb,
0035          const struct list_head *nf_osf_fingers,
0036          const int ttl_check, struct nf_osf_data *data);
0037 
0038 #endif /* _NFOSF_H */