|
|
|
|
@ -2481,25 +2481,26 @@ static int table_new_target(struct rtpengine_table *t, struct rtpengine_target_i
|
|
|
|
|
return -EINVAL;
|
|
|
|
|
if (i->num_destinations > RTPE_MAX_FORWARD_DESTINATIONS)
|
|
|
|
|
return -EINVAL;
|
|
|
|
|
for (u = 0; u < RTPE_NUM_OUTPUT_MEDIA; u++) {
|
|
|
|
|
if (i->media_output_idxs[u].rtp_start_idx >= i->num_destinations)
|
|
|
|
|
return -EINVAL;
|
|
|
|
|
if (i->media_output_idxs[u].rtp_end_idx > i->num_destinations)
|
|
|
|
|
return -EINVAL;
|
|
|
|
|
if (i->media_output_idxs[u].rtp_end_idx < i->media_output_idxs[u].rtp_start_idx)
|
|
|
|
|
return -EINVAL;
|
|
|
|
|
if (i->media_output_idxs[u].rtcp_start_idx >= i->num_destinations)
|
|
|
|
|
return -EINVAL;
|
|
|
|
|
if (i->media_output_idxs[u].rtcp_end_idx > i->num_destinations)
|
|
|
|
|
return -EINVAL;
|
|
|
|
|
if (i->media_output_idxs[u].rtcp_end_idx < i->media_output_idxs[u].rtcp_start_idx)
|
|
|
|
|
return -EINVAL;
|
|
|
|
|
}
|
|
|
|
|
if (i->num_payload_types > RTPE_NUM_PAYLOAD_TYPES)
|
|
|
|
|
return -EINVAL;
|
|
|
|
|
if (!i->non_forwarding) {
|
|
|
|
|
if (!i->num_destinations)
|
|
|
|
|
return -EINVAL;
|
|
|
|
|
for (u = 0; u < RTPE_NUM_OUTPUT_MEDIA; u++) {
|
|
|
|
|
printk(KERN_ERR "XXX %d %d\n", __LINE__, i->media_output_idxs[u].rtp_start_idx);
|
|
|
|
|
if (i->media_output_idxs[u].rtp_start_idx >= i->num_destinations)
|
|
|
|
|
return -EINVAL;
|
|
|
|
|
if (i->media_output_idxs[u].rtp_end_idx > i->num_destinations)
|
|
|
|
|
return -EINVAL;
|
|
|
|
|
if (i->media_output_idxs[u].rtp_end_idx < i->media_output_idxs[u].rtp_start_idx)
|
|
|
|
|
return -EINVAL;
|
|
|
|
|
if (i->media_output_idxs[u].rtcp_start_idx >= i->num_destinations)
|
|
|
|
|
return -EINVAL;
|
|
|
|
|
if (i->media_output_idxs[u].rtcp_end_idx > i->num_destinations)
|
|
|
|
|
return -EINVAL;
|
|
|
|
|
if (i->media_output_idxs[u].rtcp_end_idx < i->media_output_idxs[u].rtcp_start_idx)
|
|
|
|
|
return -EINVAL;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else {
|
|
|
|
|
if (i->num_destinations)
|
|
|
|
|
|