mirror of
https://github.com/smxi/inxi.git
synced 2024-11-16 16:21:39 +00:00
Merge pull request #106 from dsalt/ipv6
Improve IPv6 handling to cope with multiple addresses. After reviewing issue 78 and the links in it, which I'm glad I added since they explain the stuff pretty well, I'm accepting this patch as is. I'm not positive about the temporary address being hidden, but it's easy enough to modify that in the future if it's an issue.
This commit is contained in:
commit
d225596251
24
inxi
24
inxi
|
@ -8119,6 +8119,7 @@ get_networking_local_ip_data()
|
||||||
aInterfaces[interface]++
|
aInterfaces[interface]++
|
||||||
|
|
||||||
while (getline && !/^$/ ) {
|
while (getline && !/^$/ ) {
|
||||||
|
addIpV6 = ""
|
||||||
if ( ipTool == "ifconfig" ) {
|
if ( ipTool == "ifconfig" ) {
|
||||||
if (/inet addr:/) {
|
if (/inet addr:/) {
|
||||||
ifIp = gensub( /addr:([0-9\.]+)/, "\\1", "g", $2 )
|
ifIp = gensub( /addr:([0-9\.]+)/, "\\1", "g", $2 )
|
||||||
|
@ -8127,7 +8128,7 @@ get_networking_local_ip_data()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (/inet6 addr:/) {
|
if (/inet6 addr:/) {
|
||||||
ifIpV6 = $3
|
addIpV6 = $3
|
||||||
}
|
}
|
||||||
if ( bsdType == "bsd" ) {
|
if ( bsdType == "bsd" ) {
|
||||||
if ( $1 == "inet" ) {
|
if ( $1 == "inet" ) {
|
||||||
|
@ -8138,7 +8139,7 @@ get_networking_local_ip_data()
|
||||||
}
|
}
|
||||||
if ( $0 ~ /inet6.*%/ ) {
|
if ( $0 ~ /inet6.*%/ ) {
|
||||||
sub(/%.*/,"",$2)
|
sub(/%.*/,"",$2)
|
||||||
ifIpV6 = $2
|
addIpV6 = $2
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -8146,15 +8147,24 @@ get_networking_local_ip_data()
|
||||||
if ( $1 == "inet" ) {
|
if ( $1 == "inet" ) {
|
||||||
ifIp = $2
|
ifIp = $2
|
||||||
}
|
}
|
||||||
if ( $1 == "inet6" ) {
|
if ( $1 == "inet6" && $0 !~ / temporary/) { # filter out IPv6 privacy addresses
|
||||||
ifIpV6 = $2
|
addIpV6 = $2
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( addIpV6 != "" && addIpV6 !~ /^fe80:/ ) { # filter out IPv6 link-local
|
||||||
|
if ( ifIpV6 == "" ) {
|
||||||
|
ifIpV6 = addIpV6
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
ifIpV6 = ifIpV6 "," addIpV6
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
# slice off the digits that are sometimes tacked to the end of the address,
|
# slice off the digits that are sometimes tacked to the end of the address,
|
||||||
# like: /64 or /24
|
# like: /64 or /24
|
||||||
sub(/\/[0-9]+/, "", ifIp)
|
sub(/\/[0-9]+/, "", ifIp)
|
||||||
sub(/\/[0-9]+/, "", ifIpV6)
|
gsub(/\/[0-9]+/, "", ifIpV6)
|
||||||
ipAddresses[interface] = ifIp "," ifMask "," ifIpV6
|
ipAddresses[interface] = ifIp "," ifMask "," ifIpV6
|
||||||
}
|
}
|
||||||
END {
|
END {
|
||||||
|
@ -13515,6 +13525,7 @@ print_network_advanced_data()
|
||||||
print_networking_ip_data()
|
print_networking_ip_data()
|
||||||
{
|
{
|
||||||
eval $LOGFS
|
eval $LOGFS
|
||||||
|
# $ip should be IPv4
|
||||||
local ip=$( get_networking_wan_ip_data )
|
local ip=$( get_networking_wan_ip_data )
|
||||||
local wan_ip_data='' a_interfaces_working='' interfaces='' i=0
|
local wan_ip_data='' a_interfaces_working='' interfaces='' i=0
|
||||||
local if_id='' if_ip='' if_ipv6='' if_ipv6_string='' full_string='' if_string=''
|
local if_id='' if_ip='' if_ipv6='' if_ipv6_string='' full_string='' if_string=''
|
||||||
|
@ -13556,7 +13567,8 @@ print_networking_ip_data()
|
||||||
if [[ $B_OUTPUT_FILTER == 'true' ]];then
|
if [[ $B_OUTPUT_FILTER == 'true' ]];then
|
||||||
if_ipv6=$FILTER_STRING
|
if_ipv6=$FILTER_STRING
|
||||||
else
|
else
|
||||||
if_ipv6=${a_interfaces_working[3]}
|
# may be more than one address here; get them all as one string
|
||||||
|
if_ipv6=${a_interfaces_working[@]:3}
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
if_ipv6_string=" ${C1}ip-v6$SEP3${C2} $if_ipv6"
|
if_ipv6_string=" ${C1}ip-v6$SEP3${C2} $if_ipv6"
|
||||||
|
|
Loading…
Reference in a new issue