netlink: GNEL_ID_GENERATE 정의가 RHEL7.5 커널 라이브러리에서 제거되었습니다.

netlink: GNEL_ID_GENERATE 정의가 RHEL7.5 커널 라이브러리에서 제거되었습니다.

우리는 최신 RHEL7.5까지 RedHat Linux 배포판 제품군에 적합하게 빌드되는 커널 모듈을 보유하고 있습니다.

RHEL7.5에서 빌드하려고 하면 다음 오류가 발생합니다.

...오류: 'GENL_ID_GENERATE'이(가) 선언되지 않았습니다...

읽어보니 커널 4.11+ 이후의 변화인 것 같지만 RHEL7.5는 커널 3.10+를 기반으로 합니다. 무슨 일이에요?

어쨌든 GENL_ID_GENERATE의 값은 0이라는 것을 알고 있습니다. 하지만 매크로를 대체하기 위해 0을 사용할 수 있나요? 이 커널 모듈과 통신하는 사용자 모드 모듈에 문제가 있습니까?

아니면 문제를 해결하는 올바른 방법은 무엇입니까? 어떤 제안이 있으십니까?

감사합니다, Weishan

답변1

보고 있다자식 커밋netlink의 경우 버전 4.11에서 구조가 일부 변경된 것 같습니다.

첫째, Linux가 정적 제품군 ID를 제거했기 때문에 .id초기화 프로그램에서 해당 필드를 완전히 생략 할 수 있습니다.genl_family

다시 한번 말씀드리지만 이 genl_register_family_with_ops기능은 더 이상 사용되지 않습니다. 반대로,Netlink는 Linux HOWTO 문서에 언급되어 있습니다.:

Linux 4.10 이전에는 genl_register_family_with_ops().4.10 이상에서 구조에 대한 참조를 genl_ops구조의 요소 genl_family(element .ops) 및 명령 수(element .n_ops)로 포함합니다.

관련 정보