I'd say, the only reliable check if the link is up is a ipv6 dad check, not a check for carrier, because this does not work in many cases. See /etc/sysconfig/network/scripts/functions,
ipv6_addr_dad_check(), ipv6_addr_dad_wait(), link_ready_check(), link_ready_wait()