* all: added a i_ttl field in network_socket_t to allow per connection ttl
authorLaurent Aimar <fenrir@videolan.org>
Thu, 31 Jul 2003 23:44:49 +0000 (23:44 +0000)
committerLaurent Aimar <fenrir@videolan.org>
Thu, 31 Jul 2003 23:44:49 +0000 (23:44 +0000)
setting (in fact only used by access_out/udp.c.

include/network.h
modules/access/ftp.c
modules/access/http.c
modules/access/mms/mmsh.c
modules/access/mms/mmstu.c
modules/access/udp.c
modules/access_output/udp.c
modules/misc/network/ipv4.c
modules/misc/network/ipv6.c
modules/misc/sap.c
src/stream_output/announce.c

index 6d00600..3be7ce8 100644 (file)
@@ -2,7 +2,7 @@
  * network.h: interface to communicate with network plug-ins
  *****************************************************************************
  * Copyright (C) 2002 VideoLAN
- * $Id: network.h,v 1.3 2002/07/20 18:01:41 sam Exp $
+ * $Id: network.h,v 1.4 2003/07/31 23:44:49 fenrir Exp $
  *
  * Authors: Christophe Massiot <massiot@via.ecp.fr>
  *
@@ -35,6 +35,8 @@ struct network_socket_t
     char * psz_server_addr;
     int i_server_port;
 
+    int i_ttl;
+
     /* Return values */
     int i_handle;
     size_t i_mtu;
index 6bec700..bbc3942 100644 (file)
@@ -2,7 +2,7 @@
  * ftp.c:
  *****************************************************************************
  * Copyright (C) 2001-2003 VideoLAN
- * $Id: ftp.c,v 1.19 2003/05/15 22:27:36 massiot Exp $
+ * $Id: ftp.c,v 1.20 2003/07/31 23:44:49 fenrir Exp $
  *
  * Authors: Laurent Aimar <fenrir@via.ecp.fr>
  *
@@ -200,6 +200,7 @@ static int Open( vlc_object_t *p_this )
     socket_desc.i_server_port   = p_url->i_server_port;
     socket_desc.psz_bind_addr   = "";
     socket_desc.i_bind_port     = 0;
+    socket_desc.i_ttl           = 0;
     p_input->p_private = (void*)&socket_desc;
     if( !( p_network = module_Need( p_input, "network", psz_network ) ) )
     {
@@ -644,6 +645,7 @@ static int  ftp_StartStream( input_thread_t *p_input, off_t i_start )
     socket_desc.i_server_port   = i_port;
     socket_desc.psz_bind_addr   = "";
     socket_desc.i_bind_port     = 0;
+    socket_desc.i_ttl           = 0;
     p_input->p_private = (void*)&socket_desc;
     if( !( p_network = module_Need( p_input, "network", "" ) ) )
     {
index 132ed70..b11a106 100644 (file)
@@ -2,7 +2,7 @@
  * http.c: HTTP access plug-in
  *****************************************************************************
  * Copyright (C) 2001, 2002 VideoLAN
- * $Id: http.c,v 1.40 2003/07/31 21:18:59 bigben Exp $
+ * $Id: http.c,v 1.41 2003/07/31 23:44:49 fenrir Exp $
  *
  * Authors: Christophe Massiot <massiot@via.ecp.fr>
  *
@@ -710,6 +710,7 @@ static int Open( vlc_object_t *p_this )
         p_access_data->socket_desc.psz_server_addr = psz_proxy;
         p_access_data->socket_desc.i_server_port = i_proxy_port;
         p_access_data->socket_desc.i_type = NETWORK_TCP;
+        p_access_data->socket_desc.i_ttl           = 0;
 
         snprintf( p_access_data->psz_buffer, MAX_QUERY_SIZE,
                   "GET http://%s:%d/%s HTTP/1.0\r\n",
@@ -721,6 +722,7 @@ static int Open( vlc_object_t *p_this )
         p_access_data->socket_desc.i_type = NETWORK_TCP;
         p_access_data->socket_desc.psz_server_addr = psz_server_addr;
         p_access_data->socket_desc.i_server_port = i_server_port;
+        p_access_data->socket_desc.i_ttl           = 0;
 
         snprintf( p_access_data->psz_buffer, MAX_QUERY_SIZE,
                   "GET /%s HTTP/1.1\r\nHost: %s\r\n",
index 1af268b..a4c4daf 100644 (file)
@@ -2,7 +2,7 @@
  * mmsh.c:
  *****************************************************************************
  * Copyright (C) 2001, 2002 VideoLAN
- * $Id: mmsh.c,v 1.3 2003/05/08 19:06:45 titer Exp $
+ * $Id: mmsh.c,v 1.4 2003/07/31 23:44:49 fenrir Exp $
  *
  * Authors: Laurent Aimar <fenrir@via.ecp.fr>
  *
@@ -711,6 +711,7 @@ static input_socket_t * NetOpenTCP( input_thread_t *p_input, url_t *p_url )
     socket_desc.i_server_port   = p_url->i_port;
     socket_desc.psz_bind_addr   = "";
     socket_desc.i_bind_port     = 0;
+    socket_desc.i_ttl           = 0;
     p_input->p_private = (void*)&socket_desc;
     if( !( p_network = module_Need( p_input, "network", psz_network ) ) )
     {
index 14b70c2..b6bda8e 100644 (file)
@@ -2,7 +2,7 @@
  * mms.c: MMS access plug-in
  *****************************************************************************
  * Copyright (C) 2001, 2002 VideoLAN
- * $Id: mmstu.c,v 1.5 2003/07/16 15:32:41 sam Exp $
+ * $Id: mmstu.c,v 1.6 2003/07/31 23:44:49 fenrir Exp $
  *
  * Authors: Laurent Aimar <fenrir@via.ecp.fr>
  *
@@ -449,6 +449,7 @@ static int MMSOpen( input_thread_t  *p_input,
     socket_desc.i_server_port   = p_url->i_port;
     socket_desc.psz_bind_addr   = "";
     socket_desc.i_bind_port     = 0;
+    socket_desc.i_ttl           = 0;
     p_input->p_private = (void*)&socket_desc;
     if( !( p_network = module_Need( p_input, "network", psz_network ) ) )
     {
@@ -490,6 +491,7 @@ static int MMSOpen( input_thread_t  *p_input,
         socket_desc.i_server_port   = 0;
         socket_desc.psz_bind_addr   = p_sys->psz_bind_addr;
         socket_desc.i_bind_port     = 7000; //p_url->i_bind_port; FIXME
+        socket_desc.i_ttl           = 0;
         p_input->p_private = (void*)&socket_desc;
         if( !( p_network = module_Need( p_input, "network", psz_network ) ) )
         {
index de0245c..ba78385 100644 (file)
@@ -2,7 +2,7 @@
  * udp.c: raw UDP & RTP access plug-in
  *****************************************************************************
  * Copyright (C) 2001, 2002 VideoLAN
- * $Id: udp.c,v 1.20 2003/07/23 07:37:34 jpsaman Exp $
+ * $Id: udp.c,v 1.21 2003/07/31 23:44:49 fenrir Exp $
  *
  * Authors: Christophe Massiot <massiot@via.ecp.fr>
  *          Tristan Leteurtre <tooney@via.ecp.fr>
@@ -261,6 +261,7 @@ static int Open( vlc_object_t *p_this )
     socket_desc.i_bind_port = i_bind_port;
     socket_desc.psz_server_addr = psz_server_addr;
     socket_desc.i_server_port = i_server_port;
+    socket_desc.i_ttl           = 0;
 
     /* Find an appropriate network module */
     p_input->p_private = (void*) &socket_desc;
index fbc6a63..e0bd432 100644 (file)
@@ -2,7 +2,7 @@
  * udp.c
  *****************************************************************************
  * Copyright (C) 2001, 2002 VideoLAN
- * $Id: udp.c,v 1.10 2003/06/19 18:45:06 gbazin Exp $
+ * $Id: udp.c,v 1.11 2003/07/31 23:44:49 fenrir Exp $
  *
  * Authors: Laurent Aimar <fenrir@via.ecp.fr>
  *          Eric Petit <titer@videolan.org>
@@ -127,6 +127,8 @@ static int Open( vlc_object_t *p_this )
     module_t            *p_network;
     network_socket_t    socket_desc;
 
+    char                *val;
+
     if( !( p_sys = p_access->p_sys =
                 malloc( sizeof( sout_access_out_sys_t ) ) ) )
     {
@@ -192,6 +194,11 @@ static int Open( vlc_object_t *p_this )
     socket_desc.i_server_port   = i_dst_port;
     socket_desc.psz_bind_addr   = "";
     socket_desc.i_bind_port     = 0;
+    socket_desc.i_ttl           = 0;
+    if( ( val = sout_cfg_find_value( p_access->p_cfg, "ttl" ) ) )
+    {
+        socket_desc.i_ttl = atoi( val );
+    }
     p_sys->p_thread->p_private = (void*)&socket_desc;
     if( !( p_network = module_Need( p_sys->p_thread,
                                     "network", "" ) ) )
index eebc826..3fa5bc0 100644 (file)
@@ -2,7 +2,7 @@
  * ipv4.c: IPv4 network abstraction layer
  *****************************************************************************
  * Copyright (C) 2001, 2002 VideoLAN
- * $Id: ipv4.c,v 1.19 2003/06/15 01:23:31 massiot Exp $
+ * $Id: ipv4.c,v 1.20 2003/07/31 23:44:49 fenrir Exp $
  *
  * Authors: Christophe Massiot <massiot@via.ecp.fr>
  *          Mathias Kretschmer <mathias@research.att.com>
@@ -347,7 +347,11 @@ static int OpenUDP( vlc_object_t * p_this, network_socket_t * p_socket )
         if( IN_MULTICAST( ntohl(inet_addr(psz_server_addr) ) ) )
         {
             /* set the time-to-live */
-            int ttl = config_GetInt( p_this, "ttl" );
+            int ttl = p_socket->i_ttl;
+            if( ttl < 1 )
+            {
+                ttl = config_GetInt( p_this, "ttl" );
+            }
             if( ttl < 1 ) ttl = 1;
 
             if( setsockopt( i_handle, IPPROTO_IP, IP_MULTICAST_TTL,
index 41095c8..418d115 100644 (file)
@@ -2,7 +2,7 @@
  * ipv6.c: IPv6 network abstraction layer
  *****************************************************************************
  * Copyright (C) 2002 VideoLAN
- * $Id: ipv6.c,v 1.13 2003/06/15 01:23:31 massiot Exp $
+ * $Id: ipv6.c,v 1.14 2003/07/31 23:44:49 fenrir Exp $
  *
  * Authors: Alexis Guillard <alexis.guillard@bt.com>
  *          Christophe Massiot <massiot@via.ecp.fr>
@@ -367,7 +367,11 @@ static int OpenUDP( vlc_object_t * p_this, network_socket_t * p_socket )
 
     if( *psz_server_addr )
     {
-        int ttl = config_GetInt( p_this, "ttl" );
+        int ttl = p_socket->i_ttl;
+        if( ttl < 1 )
+        {
+            ttl = config_GetInt( p_this, "ttl" );
+        }
         if( ttl < 1 ) ttl = 1;
 
         /* Build socket for remote connection */
index 1db6872..ad960b2 100644 (file)
@@ -2,7 +2,7 @@
  * sap.c :  SAP interface module
  *****************************************************************************
  * Copyright (C) 2001 VideoLAN
- * $Id: sap.c,v 1.20 2003/07/23 01:28:54 gbazin Exp $
+ * $Id: sap.c,v 1.21 2003/07/31 23:44:49 fenrir Exp $
  *
  * Authors: Arnaud Schauly <gitan@via.ecp.fr>
  *          ClĂ©ment Stenac <zorglub@via.ecp.fr>
@@ -225,6 +225,7 @@ static void Run( intf_thread_t *p_intf )
         socket_desc.i_bind_port       = HELLO_PORT;
         socket_desc.psz_server_addr   = "";
         socket_desc.i_server_port     = 0;
+        socket_desc.i_ttl             = 0;
         p_intf->p_private = (void*) &socket_desc;
 
         psz_network = "ipv4"; 
@@ -257,6 +258,7 @@ static void Run( intf_thread_t *p_intf )
         socket_desc.i_bind_port       = HELLO_PORT;
         socket_desc.psz_server_addr   = "";
         socket_desc.i_server_port     = 0;
+        socket_desc.i_ttl             = 0;
         p_intf->p_private = (void*) &socket_desc;
 
         psz_network = "ipv6"; 
index c0beaa9..90d664b 100644 (file)
@@ -211,6 +211,7 @@ sap_session_t * sout_SAPNew ( sout_instance_t *p_sout, char * psz_url_arg,
         socket_desc.psz_server_addr   = SAP_IPV4_ADDR;
         socket_desc.i_server_port     = SAP_PORT;
         socket_desc.i_handle          = 0;
+        socket_desc.i_ttl             = 0;
 
         /* Call the network module */
         p_sout->p_private = (void*) &socket_desc;
@@ -250,6 +251,7 @@ sap_session_t * sout_SAPNew ( sout_instance_t *p_sout, char * psz_url_arg,
         socket_desc.psz_server_addr = sap_ipv6_addr;
         socket_desc.i_server_port   = SAP_PORT;
         socket_desc.i_handle        = 0;
+        socket_desc.i_ttl           = 0;
 
         /* Call the network module */
         p_sout->p_private = (void *) &socket_desc;