#!/bin/bash

# (c) Copyright 2012-2019 Xilinx, Inc. All rights reserved.
#
# This file contains confidential and proprietary information
# of Xilinx, Inc. and is protected under U.S. and
# international copyright and other intellectual property
# laws.
#
# DISCLAIMER
# This disclaimer is not a license and does not grant any
# rights to the materials distributed herewith. Except as
# otherwise provided in a valid license issued to you by
# Xilinx, and to the maximum extent permitted by applicable
# law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND
# WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES
# AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING
# BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON-
# INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and
# (2) Xilinx shall not be liable (whether in contract or tort,
# including negligence, or under any other theory of
# liability) for any loss or damage of any kind or nature
# related to, arising under or in connection with these
# materials, including for any direct, or any indirect,
# special, incidental, or consequential loss or damage
# (including loss of data, profits, goodwill, or any type of
# loss or damage suffered as a result of any action brought
# by a third party) even if such damage or loss was
# reasonably foreseeable or Xilinx had been advised of the
# possibility of the same.
#
# CRITICAL APPLICATIONS
# Xilinx products are not designed or intended to be fail-
# safe, or for use in any application requiring fail-safe
# performance, such as life-support or safety devices or
# systems, Class III medical devices, nuclear facilities,
# applications related to the deployment of airbags, or any
# other applications that could lead to death, personal
# injury, or severe property or environmental damage
# (individually and collectively, "Critical
# Applications"). Customer assumes the sole risk and
# liability of any use of Xilinx products in Critical
# Applications, subject only to applicable laws and
# regulations governing limitations on product liability.
#
# THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS
# PART OF THIS FILE AT ALL TIMES

######################################################################

usage_msg() {
    echo
    echo "usage:"
    echo "  $(basename "$0") INTERFACE FRACTION COMMAND [ARGS]..."
    echo
}


usage_err() {
    usage_msg >&2
    exit 1
}

######################################################################
# main()

while [ $# -gt 0 ]; do
    case "$1" in
        --help)
            usage_msg; exit;;
        -*)
            usage_err;;
        *)
            break;;
    esac
    shift
done

[ $# -ge 3 ] || usage_err
interface="$1"
fraction="$2"
shift 2


# Tell SolarCapture to look in this directory for custom nodes.
export SC_NODE_PATH=$(cd "$(dirname "$0")" && /bin/pwd)

# Tell the SolarCapture libpcap bindings to use a custom node as the packet
# source when device "$interface" is opened.
nodespec="sampled:interface=$interface;fraction=$fraction"
export SC_PCAP_SOURCE_$interface="sc:$nodespec"

solar_libpcap "$@"
