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