से काम मैं इसी तरह की त्रुटि संदेश के साथ यह पेज देखा है: Nf_hook_ops returns incompatible pointer when assigning to hook_func -C -Linux -Netfilternfhook (नेटफिल्टर) त्रुटि: असंगत सूचक प्रकार
हालांकि, यह कैसे इस मुद्दे को हल करने के लिए के लिए एक स्पष्ट जवाब नहीं दिया। उस प्रश्न के लेखक ने कहा कि उन्हें पता चला कि उनका netfilter.h कहीं और स्थित है जो परेशानी का कारण बनता है, लेकिन मेरे लिए मुझे पता चला कि सभी चार फाइलें सही निर्देशिका में हैं (usr/src/linux-headers-4.8। मेरे मामले में 0-22-जेनेरिक/शामिल/लिनक्स)।
मेरा कोड निम्नलिखित है जो बेहतर स्पष्टीकरण में मदद कर सकता है।
#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/netfilter.h>
#include <linux/netfilter_ipv4.h>
static struct nf_hook_ops nfho;
unsigned int hook_func_incoming(unsigned int hooknum, struct sk_buff *sskb,
const struct net_device *in, const struct net_device *out, int (*okfn)
(struct sk_buff *)){
return NF_DROP;
}
int init_module(){
nfho.hook = hook_func_incoming;
nfho.hooknum = NF_INET_PRE_ROUTING;
nfho.pf = PF_INET;
nfho.priority = NF_IP_PRI_FIRST;
nf_register_hook(&nfho);
printk(KERN_INFO "SIMPLE FIREWALL LOADED\n");
return 0;
}
सटीक त्रुटि संदेश यह है:
त्रुटि: असंगत सूचक प्रकार से काम [-Werror = असंगत-सूचक प्रकार] nfho.hook = hook_func_incoming; ^ CC1: कुछ चेतावनी त्रुटियों
कृपया मुझे पता है कि मुझे क्या करना चाहिए मेरी नेटफिल्टर संकलित करने के लिए सक्षम होने के लिए करते हैं, किसी भी मदद की सराहना की है के रूप में इलाज किया जा रहा!
typedef unsigned int nf_hookfn(void *priv,
struct sk_buff *skb,
const struct nf_hook_state *state);
आपका समारोह hook_func_incoming
इस हस्ताक्षर से मेल नहीं खाता, तो आप इसे अपनाना चाहिए: इस प्रकार
धन्यवाद! इससे मुझे इस मुद्दे को हल करने में मदद मिली। हालांकि, क्या आप मुझे पहले और तीसरे पैरामीटर के बारे में और बता सकते हैं? मुझे ऑनलाइन कोई संबंधित दस्तावेज नहीं मिल रहा है (हालांकि मुझे दूसरे पैरामीटर के बारे में जानकारी पता है)। –