blob: 94279f56316bfbebd90de155711860cf52f94789 [file] [log] [blame]
Tristan Matthews0a329cc2013-07-17 13:20:14 -04001/*
2 * rtp.h
3 *
4 * rtp interface for srtp reference implementation
5 *
6 * David A. McGrew
7 * Cisco Systems, Inc.
8 *
9 * data types:
10 *
11 * rtp_msg_t an rtp message (the data that goes on the wire)
12 * rtp_sender_t sender side socket and rtp info
13 * rtp_receiver_t receiver side socket and rtp info
14 *
15 */
16
17/*
18 *
19 * Copyright (c) 2001-2006, Cisco Systems, Inc.
20 * All rights reserved.
21 *
22 * Redistribution and use in source and binary forms, with or without
23 * modification, are permitted provided that the following conditions
24 * are met:
25 *
26 * Redistributions of source code must retain the above copyright
27 * notice, this list of conditions and the following disclaimer.
28 *
29 * Redistributions in binary form must reproduce the above
30 * copyright notice, this list of conditions and the following
31 * disclaimer in the documentation and/or other materials provided
32 * with the distribution.
33 *
34 * Neither the name of the Cisco Systems, Inc. nor the names of its
35 * contributors may be used to endorse or promote products derived
36 * from this software without specific prior written permission.
37 *
38 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
39 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
40 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
41 * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
42 * COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
43 * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
44 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
45 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
46 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
47 * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
48 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
49 * OF THE POSSIBILITY OF SUCH DAMAGE.
50 *
51 */
52
53
54#ifndef RTP_H
55#define RTP_H
56
57#ifdef HAVE_NETINET_IN_H
58# include <netinet/in.h>
59#elif defined HAVE_WINSOCK2_H
60# include <winsock2.h>
61#endif
62
63#include "srtp.h"
64
65typedef struct rtp_sender_ctx_t *rtp_sender_t;
66
67typedef struct rtp_receiver_ctx_t *rtp_receiver_t;
68
69unsigned int
70rtp_sendto(rtp_sender_t sender, const void* msg, int len);
71
72unsigned int
73rtp_recvfrom(rtp_receiver_t receiver, void *msg, int *len);
74
75int
76rtp_receiver_init(rtp_receiver_t rcvr, int socket,
77 struct sockaddr_in addr, unsigned int ssrc);
78
79int
80rtp_sender_init(rtp_sender_t sender, int socket,
81 struct sockaddr_in addr, unsigned int ssrc);
82
83/*
84 * srtp_sender_init(...) initializes an rtp_sender_t
85 */
86
87int
88srtp_sender_init(rtp_sender_t rtp_ctx, /* structure to be init'ed */
89 struct sockaddr_in name, /* socket name */
90 sec_serv_t security_services, /* sec. servs. to be used */
91 unsigned char *input_key /* master key/salt in hex */
92 );
93
94int
95srtp_receiver_init(rtp_receiver_t rtp_ctx, /* structure to be init'ed */
96 struct sockaddr_in name, /* socket name */
97 sec_serv_t security_services, /* sec. servs. to be used */
98 unsigned char *input_key /* master key/salt in hex */
99 );
100
101
102int
103rtp_sender_init_srtp(rtp_sender_t sender, const srtp_policy_t *policy);
104
105int
106rtp_receiver_init_srtp(rtp_receiver_t sender, const srtp_policy_t *policy);
107
108
109rtp_sender_t
110rtp_sender_alloc();
111
112rtp_receiver_t
113rtp_receiver_alloc();
114
115
116/*
117 * RTP_HEADER_LEN indicates the size of an RTP header
118 */
119#define RTP_HEADER_LEN 12
120
121/*
122 * RTP_MAX_BUF_LEN defines the largest RTP packet in the rtp.c implementation
123 */
124#define RTP_MAX_BUF_LEN 16384
125
126
127#endif /* RTP_H */