]> sjero.net Git - linphone/blob - coreapi/upnp.h
Improve uPnP API and uPnP mechanism
[linphone] / coreapi / upnp.h
1 /*
2 linphone
3 Copyright (C) 2012  Belledonne Communications SARL
4
5 This program is free software; you can redistribute it and/or
6 modify it under the terms of the GNU General Public License
7 as published by the Free Software Foundation; either version 2
8 of the License, or (at your option) any later version.
9
10 This program is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13 GNU General Public License for more details.
14
15 You should have received a copy of the GNU General Public License
16 along with this program; if not, write to the Free Software
17 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
18 */
19
20 #ifndef LINPHONE_UPNP_H
21 #define LINPHONE_UPNP_H
22
23 #include "mediastreamer2/upnp_igd.h"
24 #include "linphonecore.h"
25 #include "sal.h"
26
27 typedef enum {
28         LinphoneUpnpStateIdle,
29         LinphoneUpnpStatePending, // Only used by uPnP context
30         LinphoneUpnpStateAdding,   // Only used by port binding
31         LinphoneUpnpStateRemoving, // Only used by port binding
32         LinphoneUpnpStateNotAvailable,  // Only used by uPnP context
33         LinphoneUpnpStateOk,
34         LinphoneUpnpStateKo,
35 } LinphoneUpnpState;
36
37 typedef struct _UpnpSession UpnpSession;
38 typedef struct _UpnpContext UpnpContext;
39
40 int linphone_core_update_local_media_description_from_upnp(SalMediaDescription *desc, UpnpSession *session);
41 int linphone_core_update_upnp_from_remote_media_description(LinphoneCall *call, const SalMediaDescription *md);
42 int linphone_core_update_upnp(LinphoneCore *lc, LinphoneCall *call);
43
44 int linphone_upnp_call_process(LinphoneCall *call);
45 UpnpSession* linphone_upnp_session_new(LinphoneCall *call);
46 void linphone_upnp_session_destroy(UpnpSession* session);
47 LinphoneUpnpState linphone_upnp_session_get_state(UpnpSession *session);
48
49 UpnpContext *linphone_upnp_context_new(LinphoneCore *lc);
50 void linphone_upnp_context_destroy(UpnpContext *ctx);
51 LinphoneUpnpState linphone_upnp_context_get_state(UpnpContext *ctx);
52 const char *linphone_upnp_context_get_external_ipaddress(UpnpContext *ctx);
53
54 #endif //LINPHONE_UPNP_H