typedef unsigned int nf_hookfn(unsigned int hooknum, struct sk_buff **skb, const struct net_device *in, const struct net_device *out, int (*okfn)(struct sk_buff *));
여기서 okfn의 기능을 모르겠습니다. 어떻게 사용되어 지는 함수죠?
해당 훅 지점을 통과 했을때 다음으로 불리워질 function 입니다...
아래에서처럼 HOOKing이 define되어 있는 상태라면 HOOK루틴을 따라가고 난 후 불려지며 define되어 있지 않은 경우엔 HOOK function이 불려지지 않 고 바로 okfn이 불려지는 흐름으로 알고 있습니다.
이는 ip_input.c등의 파일에서 HOOKing지점마다 NF_HOOK macro로 구현되어 있는 것 같은데 확인해 보시길...(질문의 의도에 맞는지요....)
#ifdef CONFIG_NETFILTER_DEBUG
#define NF_HOOK(pf, hook, skb, indev, outdev, okfn) \ nf_hook_slow((pf), (hook), (skb), (indev), (outdev), (okfn), INT_MIN) #define NF_HOOK_THRESH nf_hook_slow #else #define NF_HOOK(pf, hook, skb, indev, outdev, okfn) \ (list_empty(&nf_hooks[(pf)][(hook)]) \ ? (okfn)(skb) \ : nf_hook_slow((pf), (hook), (skb), (indev), (outdev), (okfn), INT_MIN)) #define NF_HOOK_THRESH(pf, hook, skb, indev, outdev, okfn, thresh) \ (list_empty(&nf_hooks[(pf)][(hook)]) \ ? (okfn)(skb) \ : nf_hook_slow((pf), (hook), (skb), (indev), (outdev), (okfn), (thresh))) #endif
------------------Signature 바늘속에서 사막찾기 0.o
텍스트 포맷에 대한 자세한 정보
<code>
<blockcode>
<apache>
<applescript>
<autoconf>
<awk>
<bash>
<c>
<cpp>
<css>
<diff>
<drupal5>
<drupal6>
<gdb>
<html>
<html5>
<java>
<javascript>
<ldif>
<lua>
<make>
<mysql>
<perl>
<perl6>
<php>
<pgsql>
<proftpd>
<python>
<reg>
<spec>
<ruby>
<foo>
[foo]
RE: netfilter 에서 okfn이 정확히 무슨 기능을 하나요?
해당 훅 지점을 통과 했을때 다음으로 불리워질 function 입니다...
아래에서처럼 HOOKing이 define되어 있는 상태라면 HOOK루틴을
아래에서처럼 HOOKing이 define되어 있는 상태라면 HOOK루틴을 따라가고
난 후 불려지며 define되어 있지 않은 경우엔 HOOK function이 불려지지 않
고 바로 okfn이 불려지는 흐름으로 알고 있습니다.
이는 ip_input.c등의 파일에서 HOOKing지점마다 NF_HOOK macro로
구현되어 있는 것 같은데 확인해 보시길...(질문의 의도에 맞는지요....)
#ifdef CONFIG_NETFILTER_DEBUG
#define NF_HOOK(pf, hook, skb, indev, outdev, okfn) \
nf_hook_slow((pf), (hook), (skb), (indev), (outdev), (okfn), INT_MIN)
#define NF_HOOK_THRESH nf_hook_slow
#else
#define NF_HOOK(pf, hook, skb, indev, outdev, okfn) \
(list_empty(&nf_hooks[(pf)][(hook)]) \
? (okfn)(skb) \
: nf_hook_slow((pf), (hook), (skb), (indev), (outdev), (okfn), INT_MIN))
#define NF_HOOK_THRESH(pf, hook, skb, indev, outdev, okfn, thresh) \
(list_empty(&nf_hooks[(pf)][(hook)]) \
? (okfn)(skb) \
: nf_hook_slow((pf), (hook), (skb), (indev), (outdev), (okfn), (thresh)))
#endif
------------------Signature
바늘속에서 사막찾기 0.o
댓글 달기