netfilter 에 Hook 함수 등록시 동일한 priority 를 주어도 상관없나요?
글쓴이: trymp / 작성시간: 수, 2010/10/20 - 5:38오후
unsigned int test_in(unsigned int hooknum,
struct sk_buff *pskb,
const struct net_device *in,
const struct net_device *out,
int (*okfn)(struct sk_buff *))
static struct nf_hook_ops test_pre_ops
= { { NULL, NULL }, test_in, THIS_MODULE, PF_INET, NF_IP_PRE_ROUTING, NF_IP_PRI_FIRST};
ret = nf_register_hook(&test_pre_ops);
위와 같은 식으로 대부분 netfilter 에 hook 함수를 등록하잖아요
이때 기존에 동일한 체인에 동일한 priority 가 이미 등록되어 있을 때
추가적으로 다른 함수를 등록해도 동작하는데 지장이 없나요?
Forums:
지장이 없을것 같습니다. maybe
=====================
A Hook, 우선순위1
B Hook, 우선순위2
C Hook, 우선순위3 이 있을때
nf_register_hook( D Hook, 우선순위2 ) 하면 아래처럼 됩니다.
A Hook, 우선순위1
B Hook, 우선순위2
D Hook, 우선순위2
C Hook, 우선순위3
그래서.. 실제 넷필터가 적용되는 순서는
A,B,D,C 순서입니다.
A Hook이 NF_ACCEPT를 리턴하면 B Hook이 호출되는데
B Hook이 NF_DROP을 리턴하면 D Hook,C Hook은 호출되지 않습니다.
(즉, D는 B와 같은 우선순위인데도 호출되지 않습니다)
이 의미는... 동일한 우선순위의 훅들은 nf_register_hook() 을 호출한 순서대로 우선순위를 가지게 되는 군요.
먼저 등록한게 우선순위가 높음
=====================
아 그렇군요...^^
알려주셔서 감사합니다.
댓글 달기