[Mew-dist 11494] Re: (v6 8660) Re: Re: im-133

Hajimu UMEMOTO ( 梅本 肇 ) ume at example.com
1999年 11月 26日 (金) 22:25:56 JST


  梅本@日立です。

>>>>> On Fri, 26 Nov 1999 21:47:01 +0900
>>>>> ume at example.com (Hajimu UMEMOTO (梅本 肇)) said:

うめ>   思いっきり IPv6 Perl 依存してましたね。X-(
うめ>   出直してきます。

  出直してきました。
  先のパッチの上に当てて下さい。

# im を触ってるのに mew_ なんて書いてるし。X-(
-------------- next part --------------
Index: IM/TcpTransaction.pm
===================================================================
RCS file: /usr/home/ume/ncvs/src/im/IM/TcpTransaction.pm,v
retrieving revision 1.5
diff -u -r1.5 TcpTransaction.pm
--- TcpTransaction.pm	1999/11/26 12:11:06	1.5
+++ TcpTransaction.pm	1999/11/26 13:19:46
@@ -55,7 +55,7 @@
     use IM::Log;
 }
 
-sub mew_getaddrinfo ($$;$$$$) {
+sub im_getaddrinfo ($$;$$$$) {
     return getaddrinfo(@_) if (eval '&AF_INET6');	# perl supports IPv6
 
     my ($node, $serv, $family, $socktype, $proto, $flags) = @_;
@@ -126,13 +126,9 @@
 	if ($family == AF_INET) {
 	    $sin = pack_sockaddr_in($se_port, $he_addr);
 	} else {
-	    $sin = pack_sockaddr_in6($se_port, $he_addr);
+	    $sin = inet6_pack_sockaddr_in6($family, $se_port, $he_addr);
 	}
-	push(@infos, $family);
-	push(@infos, $socktype);
-	push(@infos, $pe_proto);
-	push(@infos, $sin);
-	push(@infos, $he_name);
+	push(@infos, $family, $socktype, $pe_proto, $sin, $he_name);
     }
     @infos;
 }
@@ -202,7 +198,7 @@
 	    $Cur_server = $s;
 	}
 	$0 = progname() . ": getaddrinfo($s)";
-	@he_infos = mew_getaddrinfo($s, $remoteport, AF_UNSPEC, SOCK_STREAM);
+	@he_infos = im_getaddrinfo($s, $remoteport, AF_UNSPEC, SOCK_STREAM);
 	if ($#he_infos < 0) {
 	    im_warn("address unknown for $s\n");
 	    @Response = ("address unknown for $s");
@@ -228,7 +224,7 @@
 		if ($family == AF_INET) {
 		    $port = (unpack_sockaddr_in($sin))[0];
 		} else {
-		    $port = (unpack_sockaddr_in6($sin))[0];
+		    $port = (inet6_unpack_sockaddr_in6($sin))[0];
 		}
 		*SOCK = \*{$name};
 		$SOCK = $port;
@@ -519,6 +515,17 @@
 	return pack('CCnN', 1+1+2+4+16+4, $family, $port, 0) . $he_addr .
 		    pack('N', 0);
     }
+}
+
+sub inet6_unpack_sockaddr_in6 ($) {
+    return unpack_sockaddr_in6(@_) if (eval '&AF_INET6');
+
+    my $sock = shift;
+
+    my ($len, $family, $port, $flow, $a1, $a2, $a3, $a4)
+	= unpack('CCnNN4', $sock);
+    my $addr = pack('N4', $a1, $a2, $a3, $a4);
+    ($port, $addr);
 }
 
 sub inet6_family () {
-------------- next part --------------
梅本 肇@(株)日立製作所 システム開発本部
E-Mail: ume at example.com ume at example.com ume at example.com
URL: http://www.imasy.org/~ume/


Mew-dist メーリングリストの案内