<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Windows-1252">
<meta name="Generator" content="Microsoft Word 15 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
        {font-family:"Times New Roman \(Body CS\)";
        panose-1:2 11 6 4 2 2 2 2 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
span.EmailStyle19
        {mso-style-type:personal-reply;
        font-family:"Calibri",sans-serif;
        color:windowtext;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-size:10.0pt;}
@page WordSection1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
        {page:WordSection1;}
--></style>
</head>
<body lang="EN-US" link="blue" vlink="purple" style="word-wrap:break-word">
<div class="WordSection1">
<p class="MsoNormal">I think your suggestions make sense.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">As I recall, the switch to turn off IPv6 is at compile time. Being able to turn that off (or on) at runtime would be good too.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Being able to restrict gathering to the default interface sounds good. As it is, I see libnice grabbing addresses from interfaces like the virtual ones used for virtual machines. This is not useful and clogs up negotiation.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">The other challenge that I run into is exposure of these controls when using gstreamer.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">With gstreamer people sometime interface directly with C++. But also through the text based pipeline construction. And through interfaces like the Java ones.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Is there an easy and natural way to talk with libnice (e.g. use nice_agent_add_local_address()) when using gstreamer? Does it make any sense to provide side channel communication to libnice via environment variables or a config file? That
 sounds a bit messy, but could help expose functionality without having to plumb everything through the gstreamer interfaces.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Stuart<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<div style="border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0in 0in 0in">
<p class="MsoNormal" style="margin-bottom:12.0pt"><b><span style="font-size:12.0pt;color:black">From:
</span></b><span style="font-size:12.0pt;color:black">Olivier Crête <olivier.crete@collabora.com><br>
<b>Date: </b>Friday, October 16, 2020 at 6:07 AM<br>
<b>To: </b>Juan Navarro <juan.navarro@gmx.es>, Stuart Marshall <stuart@seelye.net>, nice@lists.freedesktop.org <nice@lists.freedesktop.org><br>
<b>Subject: </b>Re: [libnice] Force an external address (srflx) candidate?<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal" style="margin-bottom:12.0pt">Hi,<br>
<br>
I think there are 2 things we could do.<br>
<br>
1. We can add a new API like:<br>
nice_agent_add_local_address_with_external(agent,internal_addr,<br>
external_address)<br>
<br>
This API would let libnice know about such forwarded addresses. We can<br>
then expose it to the peer as a host candidate with the external<br>
address. And internally libnice could use it as a normal host<br>
candidate.<br>
<br>
If you know for sure that the machine is not behind an unexpected NAT<br>
(ie, it's a server). Then you would not longer need to set a STUN or<br>
TURN server on that machine and you should be able to only have host<br>
candidates so the gathering should be instant.<br>
<br>
2. We already have nice_agent_add_local_address() for the application<br>
to select internal addresses to use. As you know, if this API is not<br>
use, we just gather the addresses of all interfaces. I wonder if it<br>
wouldn't be a good idea to have a property to restrict the automatic<br>
gathering to only the default interface. That will reduce the number of<br>
candidates and it should make operations faster.<br>
<br>
Olivier<br>
<br>
<br>
On Thu, 2020-10-15 at 11:30 +0200, Juan Navarro wrote:<br>
> Thanks for your comments; however I believe this would indeed fall into<br>
> the category of feature request, because after looking at all the docs<br>
> and even checking a bit of the code, it's not apparent to me that this<br>
> possibility is offered.<br>
> <br>
> <br>
> On 14/10/20 23:22, Stuart Marshall wrote:<br>
> > Juan, to further answer your question: we’re using libnice for our<br>
> > server. However, I had to upgrade the libnice to a private build from<br>
> > the tip of libnice master. The default libnice on Ubuntu 18.04 had a<br>
> > bunch of bugs that prevented ICE negotiation from working well. The<br>
> > latest libnice seems to work well (albeit a bit slowly), but you may<br>
> > not be able to use the standard ones that come with your distro. I<br>
> > haven’t checked the version of libnice in Ubuntu 20.04. I think it was<br>
> > updated, but not sure if it has all the recent(ish) bugfixes.<br>
> > <br>
> <br>
> Yeah we also build our own binaries, to stay on top of latest fixes, to<br>
> generate GStreamer bindings for our fork of GStreamer, but also to add<br>
> the "G_DISABLE_ASSERT" flag, which disables assertions in runtime<br>
> (otherwise when libnice find a bug and goes to a wrong state, it will<br>
> make the whole process crash; I get it's a good method for testing and<br>
> finding bugs, but not for production where a crash is the last thing you<br>
> want to happen)<br>
> _______________________________________________<br>
> nice mailing list<br>
> nice@lists.freedesktop.org<br>
> <a href="https://lists.freedesktop.org/mailman/listinfo/nice">https://lists.freedesktop.org/mailman/listinfo/nice</a><br>
-- <br>
Olivier Crête<br>
olivier.crete@collabora.com<o:p></o:p></p>
</div>
</div>
</body>
</html>