mirror of
https://github.com/kernelkit/infix.git
synced 2026-07-22 09:13:01 +02:00
Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
4be5217a36 | ||
|
|
ebb37732f4 | ||
|
|
94f8d1a700 | ||
|
|
39b4101d19 |
@@ -1,12 +1,49 @@
|
||||
#!/bin/sh
|
||||
#!/bin/bash
|
||||
|
||||
IFQUIRKSFILE=${IFQUIRKSFILE:-/etc/product/interface-quirks.json}
|
||||
|
||||
if [ $# -lt 2 ]; then
|
||||
echo "usage: $0 <quirk-name> <ifname>"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
quirk=$1
|
||||
ifname=$2
|
||||
if [ -f "/etc/product/interface-quirks.json" ]; then
|
||||
echo "$(jq -r --arg iface "$ifname" --arg quirk "$quirk" '.[$iface][$quirk] // "false"' /etc/product/interface-quirks.json)"
|
||||
else
|
||||
echo "false"
|
||||
fi
|
||||
|
||||
[ -f "$IFQUIRKSFILE" ] || { echo false && exit; }
|
||||
|
||||
match()
|
||||
{
|
||||
jq -e \
|
||||
--arg quirk "$quirk" --arg pattern "$1" \
|
||||
'.[$pattern][$quirk]' "$IFQUIRKSFILE" >/dev/null || return
|
||||
|
||||
echo true
|
||||
exit 0
|
||||
}
|
||||
|
||||
ethtoolmatch()
|
||||
{
|
||||
local pattern="${1#@ethtool:}"
|
||||
|
||||
grep -qFxvf \
|
||||
<(ethtool -i "$ifname") \
|
||||
<(echo -n "$pattern" | awk -v FS="=" -v RS=";" '{ printf("%s: %s\n", $1, $2); }') \
|
||||
&& return
|
||||
|
||||
match "@ethtool:$pattern"
|
||||
}
|
||||
|
||||
|
||||
for pattern in $(jq -r 'keys[]' "$IFQUIRKSFILE"); do
|
||||
case "$pattern" in
|
||||
@ethtool:*)
|
||||
ethtoolmatch "$pattern"
|
||||
;;
|
||||
"$ifname")
|
||||
match "$ifname"
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
echo "false"
|
||||
|
||||
@@ -34,6 +34,12 @@ ports=$(devlink -j port | jq -r '.port[]
|
||||
| select(.flavour == "physical")
|
||||
| .netdev')
|
||||
for iface in $ports; do
|
||||
# On systems with multiple switch trees, a port may be _both_
|
||||
# a physical port, registered with devlink, _and_ a DSA
|
||||
# port. In those cases, hold on to our initial "internal"
|
||||
# classification.
|
||||
[ $(ip -j link show dev "$iface" | jq -r '.[0].group') = internal ] && continue
|
||||
|
||||
ip link set "$iface" group port
|
||||
done
|
||||
|
||||
|
||||
@@ -33,7 +33,7 @@ for tgt in "${boot_targets}"; do
|
||||
setexpr ixmenu_n ${ixmenu_n} + 1
|
||||
|
||||
if load ${devtype} ${devnum}:${auxpart} ${loadaddr} /uboot.env; then
|
||||
env import -b ${loadaddr} ${filesize} BOOT_ORDER DEBUG ethact
|
||||
env import -c ${loadaddr} ${filesize} BOOT_ORDER DEBUG ethact
|
||||
fi
|
||||
|
||||
if test -n "${DEBUG}"; then
|
||||
|
||||
@@ -17,18 +17,8 @@
|
||||
|
||||
bool iface_has_quirk(const char *ifname, const char *quirkname)
|
||||
{
|
||||
struct json_t *iface, *quirk;
|
||||
|
||||
if (!confd.ifquirks)
|
||||
return false;
|
||||
|
||||
iface = json_object_get(confd.ifquirks, ifname);
|
||||
if (!iface)
|
||||
return false;
|
||||
|
||||
quirk = json_object_get(iface, quirkname);
|
||||
|
||||
return quirk ? json_is_true(quirk) : false;
|
||||
return systemf("[ $(/usr/libexec/infix/has-quirk %s %s) = true ]",
|
||||
quirkname, ifname) == 0;
|
||||
}
|
||||
|
||||
static bool iface_is_phys(const char *ifname)
|
||||
|
||||
Reference in New Issue
Block a user