#define INPUT_VLAN_PORT_VAR "vlc_vlan_port"
#define INPUT_VLAN_PORT_DEFAULT 6010
+/* Delay between vlan changes - this is required to avoid flooding the VLAN
+ * server */
+#define INPUT_VLAN_CHANGE_DELAY 5000000
+
/*******************************************************************************
* Audio configuration
*******************************************************************************/
*******************************************************************************/
typedef struct input_vlan_s
{
- int i_dummy;
+ int i_vlan_id; /* current vlan number */
+ mtime_t last_change; /* last change date */
} input_vlan_t;
/*******************************************************************************
return( 1 );
}
+ /* Initialize structure */
+ p_main->p_vlan->i_vlan_id = 0;
+ p_main->p_vlan->last_change = 0;
+
intf_Msg("VLANs initialized\n");
return( 0 );
}
*******************************************************************************/
void input_VlanDestroy( void )
{
+ /* Return to default vlan */
+ if( p_main->p_vlan->i_vlan_id != 0 )
+ {
+ input_VlanJoin( 0 );
+ }
+
/* Free structure */
free( p_main->p_vlan );
}
*******************************************************************************/
int input_VlanJoin( int i_vlan_id )
{
- intf_Msg("Joining VLAN %d (channel %d)\n", i_vlan_id + 2, i_vlan_id );
+ /* If last change is too recent, wait a while */
+ if( mdate() - p_main->p_vlan->last_change < INPUT_VLAN_CHANGE_DELAY )
+ {
+ intf_Msg("Waiting before changing VLAN...\n");
+ mwait( p_main->p_vlan->last_change + INPUT_VLAN_CHANGE_DELAY );
+ }
+ p_main->p_vlan->last_change = mdate();
+ p_main->p_vlan->i_vlan_id = i_vlan_id;
+
+ intf_Msg("Joining VLAN %d (channel %d)\n", i_vlan_id + 2, i_vlan_id );
return( ZeTrucMucheFunction( i_vlan_id ) ); // ?? join vlan
}
*******************************************************************************/
void input_VlanLeave( int i_vlan_id )
{
- intf_Msg("Leaving VLAN %d (channel %d)\n", i_vlan_id + 2, i_vlan_id );
- ZeTrucMucheFunction( 0 ); // ?? join default vlan
+ // ??
}
/* following functions are local */
struct sockaddr_in sa_client;
char mess[80];
-
+ return( 0 );
+
/*
*Looking for informations about the eth0 interface
*/