如果设备未使用以太网启动,则无法解析主机名?

时间:2015-01-29 17:00:43

标签: c arm embedded-linux getaddrinfo

我使用netplugd来监控插件并拔掉以太网的事件。在获得插入事件时,还使用udhcpc从DHCP获取IP,配置静态IP以防udhcpc在5次重试中失败。

这里的问题是,如果以太网在主板启动时没有插入,静态IP将根据实现进行配置。但是之后如果插入以太网,则配置DHCP ip并且我能够ping google.com和其他主机名,但是在我的一个代码报告中使用了getaddrinfo错误 - 无法解析主机名。

如果在启动时插入以太网并在之后将其删除并再次插入,则似乎没有问题。

编辑1 这是我使用的netplug脚本

PATH=/usr/bin:/bin:/usr/sbin:/sbin
export PATH

dev="$1"
action="$2"
case "$action" in
in)
if [ -x /sbin/ifconfig ]; then
killall udhcpc
udhcpc -B -S -n -t 8 -ieth0 
if [ $? -ne 0 ]
then
j=`cat /sys/class/net/eth0/operstate`
if [ "$j" == "up" ]
then
/sbin/ifconfig $dev 192.168.1.1 up
fi
fi
else
echo "Please teach me how to plug in an interface!" 1>&2
exit 1
fi
;;
out)
if [ -x /sbin/ifconfig ]; then
echo "Ethernet Disconnected"
/sbin/ifconfig $dev 0.0.0.0 down
else
echo "Please teach me how to unplug an interface!" 1>&2
exit 1
fi
;;
probe)
exec /sbin/ip link set "$dev" up >/dev/null 2>&1
;;
*)
echo "I have been called with a funny action of '%s'!" 1>&2
exit 1
;;
esac

我已经从sysfs中包含了对operstate条目的检查,以便在没有插入电缆的情况下配置静态ip,但问题仍然存在。

0 个答案:

没有答案