|
|
|
|
@ -361,11 +361,13 @@ void kernelize(struct packet_stream *stream) {
|
|
|
|
|
struct callmaster *cm = call->callmaster;
|
|
|
|
|
struct packet_stream *sink = NULL;
|
|
|
|
|
struct interface_address *ifa;
|
|
|
|
|
const char *nk_warn_msg;
|
|
|
|
|
|
|
|
|
|
if (PS_ISSET(stream, KERNELIZED))
|
|
|
|
|
return;
|
|
|
|
|
if (cm->conf.kernelid < 0)
|
|
|
|
|
goto no_kernel;
|
|
|
|
|
nk_warn_msg = "interface to kernel module not open";
|
|
|
|
|
if (cm->conf.kernelfd < 0)
|
|
|
|
|
goto no_kernel_warn;
|
|
|
|
|
if (!PS_ISSET(stream, RTP))
|
|
|
|
|
@ -386,6 +388,7 @@ void kernelize(struct packet_stream *stream) {
|
|
|
|
|
if (is_addr_unspecified(&sink->advertised_endpoint.ip46)
|
|
|
|
|
|| !sink->advertised_endpoint.port)
|
|
|
|
|
goto no_kernel;
|
|
|
|
|
nk_warn_msg = "protocol not supported by kernel module";
|
|
|
|
|
if (!stream->handler->in->kernel
|
|
|
|
|
|| !stream->handler->out->kernel)
|
|
|
|
|
goto no_kernel_warn;
|
|
|
|
|
@ -426,8 +429,10 @@ void kernelize(struct packet_stream *stream) {
|
|
|
|
|
|
|
|
|
|
mutex_unlock(&sink->out_lock);
|
|
|
|
|
|
|
|
|
|
nk_warn_msg = "encryption cipher or HMAC not supported by kernel module";
|
|
|
|
|
if (!reti.encrypt.cipher || !reti.encrypt.hmac)
|
|
|
|
|
goto no_kernel_warn;
|
|
|
|
|
nk_warn_msg = "decryption cipher or HMAC not supported by kernel module";
|
|
|
|
|
if (!reti.decrypt.cipher || !reti.decrypt.hmac)
|
|
|
|
|
goto no_kernel_warn;
|
|
|
|
|
|
|
|
|
|
@ -439,7 +444,7 @@ void kernelize(struct packet_stream *stream) {
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
|
|
no_kernel_warn:
|
|
|
|
|
ilog(LOG_WARNING, "No support for kernel packet forwarding available");
|
|
|
|
|
ilog(LOG_WARNING, "No support for kernel packet forwarding available (%s)", nk_warn_msg);
|
|
|
|
|
no_kernel:
|
|
|
|
|
PS_SET(stream, KERNELIZED);
|
|
|
|
|
PS_SET(stream, NO_KERNEL_SUPPORT);
|
|
|
|
|
|