|
|
|
@ -1505,6 +1505,10 @@ static int proc_list_show(struct seq_file *f, void *v) { |
|
|
|
seq_printf(f, " option: rtcp-mux\n"); |
|
|
|
if (g->target.dtls) |
|
|
|
seq_printf(f, " option: dtls\n"); |
|
|
|
if (g->target.stun) |
|
|
|
seq_printf(f, " option: stun\n"); |
|
|
|
if (g->target.transcoding) |
|
|
|
seq_printf(f, " option: transcoding\n"); |
|
|
|
|
|
|
|
target_put(g); |
|
|
|
|
|
|
|
@ -3913,6 +3917,10 @@ src_check_ok: |
|
|
|
if (unlikely((g->target.ssrc) && (g->target.ssrc != rtp.header->ssrc))) |
|
|
|
goto skip_error; |
|
|
|
|
|
|
|
// if transcoding, only forward packets of passthrough payload types |
|
|
|
if (g->target.transcoding && rtp_pt_idx < 0) |
|
|
|
goto skip1; |
|
|
|
|
|
|
|
pkt_idx = packet_index(&g->decrypt, &g->target.decrypt, rtp.header); |
|
|
|
errstr = "SRTP authentication tag mismatch"; |
|
|
|
if (srtp_auth_validate(&g->decrypt, &g->target.decrypt, &rtp, &pkt_idx)) |
|
|
|
@ -3966,6 +3974,10 @@ no_intercept: |
|
|
|
srtp_encrypt(&g->encrypt, &g->target.encrypt, &rtp, pkt_idx); |
|
|
|
skb_put(skb, g->target.encrypt.mki_len + g->target.encrypt.auth_tag_len); |
|
|
|
srtp_authenticate(&g->encrypt, &g->target.encrypt, &rtp, pkt_idx); |
|
|
|
|
|
|
|
// SSRC substitution |
|
|
|
if (g->target.transcoding && g->target.ssrc_out) |
|
|
|
rtp.header->ssrc = g->target.ssrc_out; |
|
|
|
} |
|
|
|
|
|
|
|
err = send_proxy_packet(skb, &g->target.src_addr, &g->target.dst_addr, g->target.tos, par); |
|
|
|
|