다음을 통해 공유


변경 내용 알림 받기

많은 클라이언트가 라우팅 테이블을 동시에 업데이트할 수 있으며 라우팅 정보 변경이 발생할 때 클라이언트에 알림을 받아야 합니다. 예를 들어 라우팅 테이블에 대한 다른 클라이언트의 변경 내용에 대한 알림을 받지 않은 클라이언트는 오래된 경로 정보를 보급할 수 있습니다. 라우팅 테이블 관리자에 등록하도록 클라이언트를 프로그래밍하여 라우팅 테이블의 변경 내용을 알리도록 방지할 수 있습니다. 라우팅 테이블 관리자는 변경 내용을 수신하도록 등록하는 모든 클라이언트에 변경 내용 알림을 보냅니다.

변경 알림은 대상에만 적용됩니다. 라우팅 테이블 관리자에서 특정 경로에 대한 변경 내용을 쿼리할 수 있는 방법은 없습니다.

대상 경로 중 하나를 변경하면 라우팅 테이블 관리자가 변경이 발생했음을 알리는 알림을 보냅니다. 이 알림은 발생한 변경 유형에 대해 라우팅 테이블 관리자에 등록한 클라이언트에만 전달됩니다. 라우팅 테이블 관리자의 라우팅 정보에 대한 모든 변경 내용은 하나 이상의 보기에서 발생하며 지원되는 뷰의 하위 집합에서 변경 알림 메시지를 요청할 수 있습니다.

현재 클라이언트가 등록할 수 있는 세 가지 유형의 변경 알림이 있습니다.

  • 대상 경로에 대한 변경 알림입니다. 이 요청은 RTM_CHANGE_TYPE_ALL 플래그를 사용하여 수행됩니다.

  • 대상에 대한 최상의 경로가 변경되거나 현재 최상의 경로 변경에 대한 다음 정보 중 어느 것이든 알림:

    • 기본 설정
    • 다음 홉
    • 경로 플래그

    이 요청은 RTM_CHANGE_TYPE_BEST 플래그를 사용하여 수행됩니다.

  • 최상의 경로에서 전달하지 않는 플래그의 변경 내용을 제외하고 형식의 모든 변경 내용에 대한 알림은 RTM_CHANGE_TYPE_BEST. 예를 들어 라우터 관리자는 유니캐스트 보기에서 이 형식의 변경 내용을 대기하고 유니캐스트 전달자의 정보를 업데이트합니다. 이 요청은 RTM_CHANGE_TYPE_FORWARDING 플래그를 사용하여 수행됩니다.

변경 알림 요청은 "표시된" 대상에만 변경 알림에 등록하여 대상의 하위 집합으로 제한할 수도 있습니다. 클라이언트는 RtmMarkDestForChangeNotification을 호출하여 변경 알림 대상을 표시할 수 있습니다.

변경이 발생하면 라우팅 테이블 관리자가 이 변경에 대한 알림을 받아야 하는 클라이언트가 있는지 확인합니다. 다음 조건이 모두 충족되면 클라이언트에 변경 알림을 받아야 합니다.

  • 발생한 변경 유형은 클라이언트가 알림을 위해 등록한 형식입니다.
  • 클라이언트가 모든 대상에 대한 변경 내용을 요청한 경우 클라이언트가 표시한 대상 또는 대상에 대한 변경 내용
  • 클라이언트가 이 변경이 발생한 보기에 대한 변경 알림을 요청했습니다.

변경 내용이 위의 모든 조건을 충족하는 경우 변경 내용이 캐시되고 클라이언트에 알림이 표시됩니다.

알림은 실제 변경 내용이 무엇인지 지정하지 않고 발생한 변경 내용만 지정합니다. 클라이언트는 RtmRegisterForChangeNotification에 대한 이전 호출에서 얻은 알림 핸들을 사용하여 RtmGetChangedDests를 호출하여 변경 내용을 검색해야 합니다.