2017-10-19 6 views
0

직접 netfilter conntrack 모듈을 만들고 싶습니다. 그래서 커널 소스 트리에서 netfilter conntrack에 대한 모든 소스 코드를 내 외부 디렉토리로 복사합니다. 컴파일 후 insmod가 될 수 있습니다. 그런 다음 nf_conn 구조체에 일부 멤버를 추가하면 성공적으로 컴파일됩니다. 그러나, 그것은 insmod 수 없습니다. 시스템에서 나에게 "기호의 버전에 대한 동의 ...."라는 메시지를 보냅니다.insmod 사용자 정의 모듈이 메시지와 함께 실패했습니다. 심볼의 버전에 대한 동의가 없습니다.

아무도 도와 줄 수 있습니까?

+0

원래 커널 프로세스에 영향을 미치지 않고 내 conntrack 모듈을 갖고 싶습니다. 원래 conntrack 모듈은 이전과 같이 유지됩니다. – river

+0

당신이 수정 한'nf_conn' 구조는 netfilter conntrack 모듈뿐만 아니라 [other modules] (http://elixir.free-electrons.com/linux/latest/ident/nf_conn)에서도 사용됩니다. 모듈이 해당 모듈의 기능을 사용하는 경우 해당 모듈도 다시 컴파일해야합니다. (BTW, "버전에 대한 동의하지 않음"메시지는 아마도 주어진 구조체를 사용합니다). – Tsyvarev

+0

고마워, 나는 해결책을 가지고있다. 나는 나 자신에게 대답했다. – river

답변

0

수정 된 conntrack 모듈의 디렉토리에서 현재 개발중인 모듈로 Module.symvers 파일을 복사하기 만하면됩니다. 동일한 함수 이름의 경우 커널 소스 트리가 제공하는 함수 이름 대신 사용됩니다.

또는 메이크 수정 : OBJ-Y : = new_conntrack/발신자/

그것은 new_conntrack /의 새로운 CRC 값을 사용합니다. https://www.kernel.org/doc/Documentation/kbuild/modules.txt