family ) { $name = implode( '.', array_reverse( explode( '.', $address->text ) ) ) . '.in-addr.arpa'; } else { $name = implode( '.', array_reverse( str_split( $address->hex ) ) ) . '.ip6.arpa'; } $names = array(); foreach ( self::query( $name, DNS_PTR ) as $record ) { if ( isset( $record['target'] ) && is_string( $record['target'] ) ) { $names[] = $record['target']; } } return $names; } /** * A and AAAA addresses for a name. * * @param string $hostname Name. * @return array */ public function forward( $hostname ) { $addresses = array(); foreach ( self::query( $hostname, DNS_A | DNS_AAAA ) as $record ) { if ( isset( $record['ip'] ) ) { $addresses[] = $record['ip']; } if ( isset( $record['ipv6'] ) ) { $addresses[] = $record['ipv6']; } } return $addresses; } }