Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
L
libnice
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
cpp-libs
libnice
Commits
f8ed0188
Commit
f8ed0188
authored
Apr 09, 2014
by
Youness Alaoui
Committed by
Olivier Crête
May 15, 2014
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Add support for MS-ICE2 candidate priorization for OC2007R2 compatibility
parent
6263028e
Changes
5
Show whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
100 additions
and
9 deletions
+100
-9
agent/agent-priv.h
agent/agent-priv.h
+4
-0
agent/candidate.c
agent/candidate.c
+70
-7
agent/candidate.h
agent/candidate.h
+7
-1
agent/conncheck.c
agent/conncheck.c
+4
-1
agent/discovery.c
agent/discovery.c
+15
-0
No files found.
agent/agent-priv.h
View file @
f8ed0188
...
@@ -247,6 +247,10 @@ guint32
...
@@ -247,6 +247,10 @@ guint32
nice_candidate_ice_priority
(
const
NiceCandidate
*
candidate
,
nice_candidate_ice_priority
(
const
NiceCandidate
*
candidate
,
gboolean
reliable
,
gboolean
nat_assisted
);
gboolean
reliable
,
gboolean
nat_assisted
);
guint32
nice_candidate_ms_ice_priority
(
const
NiceCandidate
*
candidate
,
gboolean
reliable
,
gboolean
nat_assisted
);
guint64
guint64
nice_candidate_pair_priority
(
guint32
o_prio
,
guint32
a_prio
);
nice_candidate_pair_priority
(
guint32
o_prio
,
guint32
a_prio
);
...
...
agent/candidate.c
View file @
f8ed0188
...
@@ -134,7 +134,7 @@ nice_candidate_ice_priority_full (
...
@@ -134,7 +134,7 @@ nice_candidate_ice_priority_full (
}
}
static
guint32
static
guint32
nice_candidate_ice_local_pr
iority
_full
(
guint
direction_preference
,
nice_candidate_ice_local_pr
eference
_full
(
guint
direction_preference
,
guint
other_preference
)
guint
other_preference
)
{
{
return
(
0x2000
*
direction_preference
+
return
(
0x2000
*
direction_preference
+
...
@@ -142,7 +142,7 @@ nice_candidate_ice_local_priority_full (guint direction_preference,
...
@@ -142,7 +142,7 @@ nice_candidate_ice_local_priority_full (guint direction_preference,
}
}
static
guint16
static
guint16
nice_candidate_ice_local_pr
iority
(
const
NiceCandidate
*
candidate
)
nice_candidate_ice_local_pr
eference
(
const
NiceCandidate
*
candidate
)
{
{
guint
direction_preference
;
guint
direction_preference
;
...
@@ -175,15 +175,50 @@ nice_candidate_ice_local_priority (const NiceCandidate *candidate)
...
@@ -175,15 +175,50 @@ nice_candidate_ice_local_priority (const NiceCandidate *candidate)
break
;
break
;
}
}
return
nice_candidate_ice_local_pr
iority
_full
(
direction_preference
,
1
);
return
nice_candidate_ice_local_pr
eference
_full
(
direction_preference
,
1
);
}
}
guint32
static
guint32
nice_candidate_ice_priority
(
const
NiceCandidate
*
candidate
,
nice_candidate_ms_ice_local_preference_full
(
guint
transport_preference
,
guint
direction_preference
,
guint
other_preference
)
{
return
0x1000
*
transport_preference
+
0x200
*
direction_preference
+
0x1
*
other_preference
;
}
static
guint32
nice_candidate_ms_ice_local_preference
(
const
NiceCandidate
*
candidate
)
{
guint8
transport_preference
=
0
;
guint8
direction_preference
=
0
;
switch
(
candidate
->
transport
)
{
case
NICE_CANDIDATE_TRANSPORT_TCP_SO
:
case
NICE_CANDIDATE_TRANSPORT_TCP_ACTIVE
:
transport_preference
=
NICE_CANDIDATE_TRANSPORT_MS_PREF_TCP
;
direction_preference
=
NICE_CANDIDATE_DIRECTION_MS_PREF_ACTIVE
;
break
;
case
NICE_CANDIDATE_TRANSPORT_TCP_PASSIVE
:
transport_preference
=
NICE_CANDIDATE_TRANSPORT_MS_PREF_TCP
;
direction_preference
=
NICE_CANDIDATE_DIRECTION_MS_PREF_PASSIVE
;
break
;
case
NICE_CANDIDATE_TRANSPORT_UDP
:
default:
transport_preference
=
NICE_CANDIDATE_TRANSPORT_MS_PREF_UDP
;
break
;
}
return
nice_candidate_ms_ice_local_preference_full
(
transport_preference
,
direction_preference
,
0
);
}
static
guint8
nice_candidate_ice_type_preference
(
const
NiceCandidate
*
candidate
,
gboolean
reliable
,
gboolean
nat_assisted
)
gboolean
reliable
,
gboolean
nat_assisted
)
{
{
guint8
type_preference
;
guint8
type_preference
;
guint16
local_preference
;
switch
(
candidate
->
type
)
switch
(
candidate
->
type
)
{
{
...
@@ -211,7 +246,35 @@ nice_candidate_ice_priority (const NiceCandidate *candidate,
...
@@ -211,7 +246,35 @@ nice_candidate_ice_priority (const NiceCandidate *candidate,
(
!
reliable
&&
candidate
->
transport
!=
NICE_CANDIDATE_TRANSPORT_UDP
))
{
(
!
reliable
&&
candidate
->
transport
!=
NICE_CANDIDATE_TRANSPORT_UDP
))
{
type_preference
=
type_preference
/
2
;
type_preference
=
type_preference
/
2
;
}
}
local_preference
=
nice_candidate_ice_local_priority
(
candidate
);
return
type_preference
;
}
guint32
nice_candidate_ice_priority
(
const
NiceCandidate
*
candidate
,
gboolean
reliable
,
gboolean
nat_assisted
)
{
guint8
type_preference
;
guint16
local_preference
;
type_preference
=
nice_candidate_ice_type_preference
(
candidate
,
reliable
,
nat_assisted
);
local_preference
=
nice_candidate_ice_local_preference
(
candidate
);
return
nice_candidate_ice_priority_full
(
type_preference
,
local_preference
,
candidate
->
component_id
);
}
guint32
nice_candidate_ms_ice_priority
(
const
NiceCandidate
*
candidate
,
gboolean
reliable
,
gboolean
nat_assisted
)
{
guint8
type_preference
;
guint16
local_preference
;
type_preference
=
nice_candidate_ice_type_preference
(
candidate
,
reliable
,
nat_assisted
);
local_preference
=
nice_candidate_ms_ice_local_preference
(
candidate
);
return
nice_candidate_ice_priority_full
(
type_preference
,
local_preference
,
return
nice_candidate_ice_priority_full
(
type_preference
,
local_preference
,
candidate
->
component_id
);
candidate
->
component_id
);
...
...
agent/candidate.h
View file @
f8ed0188
...
@@ -56,7 +56,7 @@
...
@@ -56,7 +56,7 @@
G_BEGIN_DECLS
G_BEGIN_DECLS
/* Constants for determining candidate priorities */
#define NICE_CANDIDATE_TYPE_PREF_HOST 120
#define NICE_CANDIDATE_TYPE_PREF_HOST 120
#define NICE_CANDIDATE_TYPE_PREF_PEER_REFLEXIVE 110
#define NICE_CANDIDATE_TYPE_PREF_PEER_REFLEXIVE 110
#define NICE_CANDIDATE_TYPE_PREF_NAT_ASSISTED 105
#define NICE_CANDIDATE_TYPE_PREF_NAT_ASSISTED 105
...
@@ -64,6 +64,12 @@ G_BEGIN_DECLS
...
@@ -64,6 +64,12 @@ G_BEGIN_DECLS
#define NICE_CANDIDATE_TYPE_PREF_UDP_TUNNELED 75
#define NICE_CANDIDATE_TYPE_PREF_UDP_TUNNELED 75
#define NICE_CANDIDATE_TYPE_PREF_RELAYED 10
#define NICE_CANDIDATE_TYPE_PREF_RELAYED 10
/* Priority preference constants for MS-ICE compatibility */
#define NICE_CANDIDATE_TRANSPORT_MS_PREF_UDP 15
#define NICE_CANDIDATE_TRANSPORT_MS_PREF_TCP 6
#define NICE_CANDIDATE_DIRECTION_MS_PREF_PASSIVE 2
#define NICE_CANDIDATE_DIRECTION_MS_PREF_ACTIVE 5
/* Max foundation size '1*32ice-char' plus terminating NULL, ICE ID-19 */
/* Max foundation size '1*32ice-char' plus terminating NULL, ICE ID-19 */
/**
/**
* NICE_CANDIDATE_MAX_FOUNDATION:
* NICE_CANDIDATE_MAX_FOUNDATION:
...
...
agent/conncheck.c
View file @
f8ed0188
...
@@ -1714,6 +1714,9 @@ int conn_check_send (NiceAgent *agent, CandidateCheckPair *pair)
...
@@ -1714,6 +1714,9 @@ int conn_check_send (NiceAgent *agent, CandidateCheckPair *pair)
}
else
if
(
agent
->
compatibility
==
NICE_COMPATIBILITY_MSN
||
}
else
if
(
agent
->
compatibility
==
NICE_COMPATIBILITY_MSN
||
agent
->
compatibility
==
NICE_COMPATIBILITY_OC2007
)
{
agent
->
compatibility
==
NICE_COMPATIBILITY_OC2007
)
{
priority
=
nice_candidate_msn_priority
(
candidate_priority
);
priority
=
nice_candidate_msn_priority
(
candidate_priority
);
}
else
if
(
agent
->
compatibility
==
NICE_COMPATIBILITY_OC2007R2
)
{
priority
=
nice_candidate_ms_ice_priority
(
candidate_priority
,
agent
->
reliable
,
FALSE
);
}
else
{
}
else
{
priority
=
nice_candidate_ice_priority
(
candidate_priority
,
priority
=
nice_candidate_ice_priority
(
candidate_priority
,
agent
->
reliable
,
FALSE
);
agent
->
reliable
,
FALSE
);
...
...
agent/discovery.c
View file @
f8ed0188
...
@@ -485,6 +485,9 @@ NiceCandidate *discovery_add_local_host_candidate (
...
@@ -485,6 +485,9 @@ NiceCandidate *discovery_add_local_host_candidate (
}
else
if
(
agent
->
compatibility
==
NICE_COMPATIBILITY_MSN
||
}
else
if
(
agent
->
compatibility
==
NICE_COMPATIBILITY_MSN
||
agent
->
compatibility
==
NICE_COMPATIBILITY_OC2007
)
{
agent
->
compatibility
==
NICE_COMPATIBILITY_OC2007
)
{
candidate
->
priority
=
nice_candidate_msn_priority
(
candidate
);
candidate
->
priority
=
nice_candidate_msn_priority
(
candidate
);
}
else
if
(
agent
->
compatibility
==
NICE_COMPATIBILITY_OC2007R2
)
{
candidate
->
priority
=
nice_candidate_ms_ice_priority
(
candidate
,
agent
->
reliable
,
FALSE
);
}
else
{
}
else
{
candidate
->
priority
=
nice_candidate_ice_priority
(
candidate
,
candidate
->
priority
=
nice_candidate_ice_priority
(
candidate
,
agent
->
reliable
,
FALSE
);
agent
->
reliable
,
FALSE
);
...
@@ -557,6 +560,9 @@ discovery_add_server_reflexive_candidate (
...
@@ -557,6 +560,9 @@ discovery_add_server_reflexive_candidate (
}
else
if
(
agent
->
compatibility
==
NICE_COMPATIBILITY_MSN
||
}
else
if
(
agent
->
compatibility
==
NICE_COMPATIBILITY_MSN
||
agent
->
compatibility
==
NICE_COMPATIBILITY_OC2007
)
{
agent
->
compatibility
==
NICE_COMPATIBILITY_OC2007
)
{
candidate
->
priority
=
nice_candidate_msn_priority
(
candidate
);
candidate
->
priority
=
nice_candidate_msn_priority
(
candidate
);
}
else
if
(
agent
->
compatibility
==
NICE_COMPATIBILITY_OC2007R2
)
{
candidate
->
priority
=
nice_candidate_ms_ice_priority
(
candidate
,
agent
->
reliable
,
nat_assisted
);
}
else
{
}
else
{
candidate
->
priority
=
nice_candidate_ice_priority
(
candidate
,
candidate
->
priority
=
nice_candidate_ice_priority
(
candidate
,
agent
->
reliable
,
nat_assisted
);
agent
->
reliable
,
nat_assisted
);
...
@@ -618,6 +624,9 @@ discovery_add_relay_candidate (
...
@@ -618,6 +624,9 @@ discovery_add_relay_candidate (
}
else
if
(
agent
->
compatibility
==
NICE_COMPATIBILITY_MSN
||
}
else
if
(
agent
->
compatibility
==
NICE_COMPATIBILITY_MSN
||
agent
->
compatibility
==
NICE_COMPATIBILITY_OC2007
)
{
agent
->
compatibility
==
NICE_COMPATIBILITY_OC2007
)
{
candidate
->
priority
=
nice_candidate_msn_priority
(
candidate
);
candidate
->
priority
=
nice_candidate_msn_priority
(
candidate
);
}
else
if
(
agent
->
compatibility
==
NICE_COMPATIBILITY_OC2007R2
)
{
candidate
->
priority
=
nice_candidate_ms_ice_priority
(
candidate
,
agent
->
reliable
,
FALSE
);
}
else
{
}
else
{
candidate
->
priority
=
nice_candidate_ice_priority
(
candidate
,
candidate
->
priority
=
nice_candidate_ice_priority
(
candidate
,
agent
->
reliable
,
FALSE
);
agent
->
reliable
,
FALSE
);
...
@@ -695,6 +704,9 @@ discovery_add_peer_reflexive_candidate (
...
@@ -695,6 +704,9 @@ discovery_add_peer_reflexive_candidate (
}
else
if
(
agent
->
compatibility
==
NICE_COMPATIBILITY_MSN
||
}
else
if
(
agent
->
compatibility
==
NICE_COMPATIBILITY_MSN
||
agent
->
compatibility
==
NICE_COMPATIBILITY_OC2007
)
{
agent
->
compatibility
==
NICE_COMPATIBILITY_OC2007
)
{
candidate
->
priority
=
nice_candidate_msn_priority
(
candidate
);
candidate
->
priority
=
nice_candidate_msn_priority
(
candidate
);
}
else
if
(
agent
->
compatibility
==
NICE_COMPATIBILITY_OC2007R2
)
{
candidate
->
priority
=
nice_candidate_ms_ice_priority
(
candidate
,
agent
->
reliable
,
FALSE
);
}
else
{
}
else
{
candidate
->
priority
=
nice_candidate_ice_priority
(
candidate
,
candidate
->
priority
=
nice_candidate_ice_priority
(
candidate
,
agent
->
reliable
,
FALSE
);
agent
->
reliable
,
FALSE
);
...
@@ -796,6 +808,9 @@ NiceCandidate *discovery_learn_remote_peer_reflexive_candidate (
...
@@ -796,6 +808,9 @@ NiceCandidate *discovery_learn_remote_peer_reflexive_candidate (
}
else
if
(
agent
->
compatibility
==
NICE_COMPATIBILITY_MSN
||
}
else
if
(
agent
->
compatibility
==
NICE_COMPATIBILITY_MSN
||
agent
->
compatibility
==
NICE_COMPATIBILITY_OC2007
)
{
agent
->
compatibility
==
NICE_COMPATIBILITY_OC2007
)
{
candidate
->
priority
=
nice_candidate_msn_priority
(
candidate
);
candidate
->
priority
=
nice_candidate_msn_priority
(
candidate
);
}
else
if
(
agent
->
compatibility
==
NICE_COMPATIBILITY_OC2007R2
)
{
candidate
->
priority
=
nice_candidate_ms_ice_priority
(
candidate
,
agent
->
reliable
,
FALSE
);
}
else
{
}
else
{
candidate
->
priority
=
nice_candidate_ice_priority
(
candidate
,
candidate
->
priority
=
nice_candidate_ice_priority
(
candidate
,
agent
->
reliable
,
FALSE
);
agent
->
reliable
,
FALSE
);
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment