#!/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_coredumps
mkdir /tmp/bcm_sosreport_coredumps

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

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

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

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

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

  if [ ! -f $FILE ]; then
    ethtool -w $IFACE data $FILE
  fi
done
