넷필터 traget 확장 방법.
글쓴이: pjh0347 / 작성시간: 화, 2005/10/04 - 1:05오전
우선 로그를 남기는 확장 타겟을 기본으로 공부하고 있습니다.
ip6t_LOG.c 파일인데요. 이런부분이 있더군요.
static unsigned int ip6t_log_target(struct sk_buff **pskb, const struct net_device *in, const struct net_device *out, unsigned int hooknum, const void *targinfo, void *userinfo) { const struct ip6t_log_info *loginfo = targinfo; char level_string[4] = "< >"; level_string[1] = '0' + (loginfo->level % 8); ip6t_log_packet(hooknum, *pskb, in, out, loginfo, level_string, NULL); return IP6T_CONTINUE; }
이중에서 다음 부분이 이해가 가지 않습니다.
const struct ip6t_log_info *loginfo = targinfo;
targinfo 포인터가 이 상황에서는 ip6t_log_info 구조체를 가리키고 있는데, 다른 확장 타겟에서는 또 다른 구조체를 가리키더군요. 예를 들면 마크 확장 타겟의 경우 ip6t_MARK.c 파일에서 이렇게 사용하고 있습니다. const struct ip6t_mark_target_info *markinfo = targinfo;
각각의 확장 타겟에서 사용하는 targinfo 포인터가 이렇게 상황별로 다른 구조체를 가리키는 원리를 알고 싶습니다.
만약에 제가 아래와 같이 함수를 하나 만들어서 사용하게 된다면
ip6t_랄랄라_target(struct sk_buff **pskb, const struct net_device *in, const struct net_device *out, unsigned int hooknum, const void *targinfo, void *userinfo) { ... }
targinfo 가 어떤 구조체를 가리키게 할것인지 어떻게 설정할수가 있는지요?
너무 급합니다. ㅠㅠ...
Forums:
댓글 달기