#!/bin/bash

IFACES=""

for DIR in /sys/class/net/*; do
  if [ -x $DIR/device/driver ] && [[ $( readlink $DIR/device/driver ) ==  *"bnxt_en" ]] && ! [ -x $DIR/device/physfn ]; then
    IFACES="$IFACES $( basename $DIR )"
  fi
done

rm -rf /tmp/bcm_sosreport_snapdumps
mkdir /tmp/bcm_sosreport_snapdumps

for IFACE in $IFACES; do
  FILE="/tmp/bcm_sosreport_snapdumps/$( hostname ).${IFACE}.$( date '+%Y-%m-%d-%H-%M-%S' ).snap.core"

  if which niccli > /dev/null; then
    PCI=$( basename $(readlink /sys/class/net/${IFACE}/device))

    niccli -pci $PCI snapdump | tee /tmp/${IFACE}.snapdump.log
    TMPFILE=$( cat /tmp/${IFACE}.snapdump.log | grep 'Generated SnapDump file' | cut -d' ' -f 4 )

    rm /tmp/${IFACE}.snapdump.log

    if [ ! -z "$TMPFILE" ] && [ -f "$TMPFILE" ]; then
      mv $TMPFILE $FILE
    fi
  fi

  if [ ! -f $FILE ]; then
    ORIG_FLAG=$(ethtool -w $IFACE  |cut -d, -f1|cut -d: -f2)

    ethtool -W $IFACE 2
    ethtool -w $IFACE data $FILE

    ethtool -W $IFACE $ORIG_FLAG
  fi
done
