본문 바로가기

MS/tip

live555 IPV6 지원

live555는 아래 링크를 보면 알겠지만 ipv6를 지원할 마음이 없는 것 같다.

http://www.live555.com/funded-projects/live555_ipv6.html


덕분에 고생좀 해서 live555에서 ipv6를 지원 하도록 변경 했다.


주요 변경 포인트는 groupsock의 socket connection부분 이다. (livemedia와 baseEnvironment도 조금 씩 수정 되었음)


AF_INET --> AF_INET6

sockaddr_in --> sockaddr_in6

 

MAKE_SOCKADDR_IN --> MAKE_SOCKADDR_IN6

#define MAKE_SOCKADDR_IN6(var,adr,prt) /*adr,prt must be in network order*/\
 struct sockaddr_in6 var;\
 memset(&var, 0, sizeof(var));\
 var.sin6_family = AF_INET6;\
 var.sin6_flowinfo = 0;\
 var.sin6_addr = adr;\
 var.sin6_port = htons(prt);\


ipv4와 ipv6를 모두 지원하기 위해서는 rtsp url 정보가 ipv4인지 ipv6인지를 구분 해서 각각의 socket initilaze부분에서 분기를 해서 처리를 했다.

 

근데 중요한건 이렇게만 한다고 해서 모든 type의 stream을 받을 수 있는 것은 아니다.

 

지금까지 수정된 코드들은 tcp만 지원하고 udp나 multicast는 지원되지 않는다.

 

udp와 multicast를 지원하기 위해서 몇 일 정도의 디버깅을 해봤으나 답이 나오지 않는다.

 

지원을 한다고 해도 live555를 최신버전이나 특정 버전으로 update해야 하는 상황이 왔을 때 ipv6를 위해 수정된 코드들을 모두 다시 지원해 줘야 하는 불상사가 발생하기 때문이다.

 

그래서 결국은 tcp만 적용 하고 udp와 multicast는 live555가 ipv6를 지원 할 때 까지 무한 대기 하는걸로...