gelen atama Ben benzer hata iletisiyle bu sayfayı gördük: Nf_hook_ops returns incompatible pointer when assigning to hook_func -C -Linux -Netfilternfhook (netfilter) hatası: uyumsuz işaretçi türü
Ancak, sorunu çözmek için nasıl açık bir cevap vermedi. Bu soru için yazar o sorun neden olan başka bir yerde bulunur onun netfilter.h öğrendim, ama benim için ben dahil dört dosyaları doğru dizinde (içindedir öğrendim söylüyor usr/src/linux-headers-4.8. Benim durumumda 0-22-generic/include/linux). Takip
daha iyi açıklığa kavuşmasına yardımcı olacaktır benim kodudur.
#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;
}
hata mesajı tam olarak şudur:
hatası: uyumsuz işaretçi türünden atama [-Werror kullanmamak = uyumlu-işaretçi türleri] nfho.hook = hook_func_incoming; ^ cc1: Bazı uyarılar hataları
bana netfilter derlemek edebilmek için ne yapmalıyım bildirin, herhangi bir yardım takdir edildiği şekilde muamele edilen!
typedef unsigned int nf_hookfn(void *priv,
struct sk_buff *skb,
const struct nf_hook_state *state);
İşleviniz hook_func_incoming
bu imzayı eşleşmiyor, bunu benimsemesi gereken şu şekildedir: (IMHO) olarak
teşekkür ederiz! Bu sorunu çözmemde bana yardımcı oldu. Ancak, bana ilk ve üçüncü parametreler hakkında daha fazla bilgi verebilir misiniz? Ben (Gerçi ikinci parametre hakkında bilgi biliyorum) çevrimiçi gerekli evrakları bulamıyorum. –