
 	 Silicom Linux RDI Control Utility
		  
1. Compiling, installing and loading the software.
       
   Compiling and installing fm10k driver
   
   tar xzvf fm10k-0.19.3.tar.gz
   cd fm10k-0.19.3/src
   make 
   make install
   
   Load fm10k & uio drivers:
   
   
   modprobe uio
   modprobe fm10k    
   
           
   Compiling and installing the rdif software in the system directory:
       # cd rdif-xxx

       # ./clean
	# ./install
       
========================================================================        
NOTE: Use local=1 parameter for local build if needed:
        #./install local=1
NOTE: in case of user defined installation, please check that navl.txt 
will be at the same folder that  rdifd.       
========================================================================        
	
2. Software loading:
	# rdif start
==========================================================================
NOTE: The command above  performs rdifd daemon start in verbose mode;
==========================================================================
	      
4. Using the software.

Default mode is MON2 - egress disable for all ports.

Please use set_port_mask command to permit egress ports list for specific
ingress port, according to desired configuration. 
Example:
rdifctl set_port_mask 5 1,2,3,4

==========================================================================
NOTE: ports 5    - Host Side;
      ports 1...4     - Network Side

Please refer to RDIF Programmer Guide for more info.
==========================================================================

============================================================================
NOTE: lbg_create returns logical port number starting from 73; need to use
this number for all LBG operation as lbg parameter and in rule assigment.
Example:
                # rdifctl dir port 1 redir_port 73
============================================================================

Usage: rdifctl <command> [parameters]
   Commands List:
set_cfg - set the device to predefined configuration
get_cfg - get current configuration mode
get_temp - get temperature
get_port_link <port> - get link status
dir     - add the rule of a port with direction matching packets to another port
mir     - add the rule of a port with mirror matching packets to another port
drop    - drop matching packets
permit  - permit matching packets
set_vlan <vlan_act> - set vlan
set_vlan_pri <vlan_pri_act>   - set vlan priority
stat  port <port>  - get statistic for specific port (port is mandatory)
rule_stat <rule_id>  <group>- get statistic (pkts counter) for specific rule (rule_id is mandatory)
query_list <group> - query rule_id list
clear - clear rule stack
clear_group <group> - clear rule stack for specific group
set_port_mask <ingress_port> <egress_port_list example: 1,2,3> - set egress port mask
get_port_mask <ingress_port>  - get egress port list
remove <rule_id> <group> remove rule
query <rule_id> <group> query rule
lbg_query_list - query LBG list
lbg_query_port_list <lbg> - query LBG ports list
lbg_create   - create LBG
lbg_add_port <lbg> <port> - add port to LBG
lbg_del_port <lbg> <port> - delete port from LBG
lbg_del <lbg>  - delete LBG
l3_hash <hash params> - set l3 hash
l2_hash <hash params> - set l2 hash
get_l3_hash - get l3 hash
get_l2_hash - get l2 hash
info         - print Program Information.
help         - print this message.
[parameters] :
               for 'permit', 'dir', 'mir' and 'drop' commands:
               rule_id <rule_id>
               src_ip <src_ip>
               dst_ip <dst_ip>
               dst_port <dst_port>
               src_port <src_port>
               src_ip_mask <src_ip_mask>
               dst_ip_mask <dst_ip_mask>
               src_ip6 <src_ip6>
               dst_ip6 <dst_ip6>
               src_ip6_mask <src_ip6_mask>
               dst_ip6_mask <dst_ip6_mask>
               group number <group>
               ip_proto <ip_proto>
               src_port_mask <src_port_mask>
               dst_port_mask <dst_port_mask>
               vlan <vlan>
               vlan_tag <vlan_tag> 1, 2, 3 ,4 for none, standard, user A, user B
               vlan_mask <vlan_mask>
               ether_type <ether_type>
               src_mac <Source MAC address>
               dst_mac <Destination MAC address>
               port <1...68>
               group - ACL number <0...15>
               redir_port <1...5> (mandatory for dir command)
               mir_port <1...5> (mandatory for mir command)
for 'set_cfg':
               <5> for MON2 (default mode) - egress disabled for all ports
for l3_hash:
               src_ip_hash, mask of src ip
               dst_ip_hash, mask of dst ip
               src_port_hash, mask of src port
               dst_port_hash, mask of dst port
               dscp_hash, 0x0-0xff
               isl_usr_hash, 0x0-0xff
               proto_hash, protocol mask
               flow_hash, 0x0-0xffff
               sym_l3_hash, on|off
               sym_l4_hash, on|off
               random_next_hop, on|off
               random_other, on|off
               random_only, on|off
for l2_hash:
               profile_idx, 0...16 default 0
               src_mac_hash, in MAC format
               dst_mac_hash, in MAC format
               ether_type_hash, 0x0-0xfff
               vlan_id_hash,  0x0-0xfff
               vlan_pri_hash,  0x0-0xf
               vlan2_id_hash,  0x0-0xfff
               vlan2_pri_hash,  0x0-0xf
               sym_mac_hash, on|off

Entire numerical paramters are in decimal format (123) or hex format (0xabc),
MAC is in aa:bb:cc:dd:ee:ff format.
Example:
         rdifctl drop port 1 src_ip 196.0.0.126
         rdifctl set_port_mask 5 1,2,3,4

 
5. Software unloading.

    # rdif stop
 
   
