1 ! Copyright (C) 2010 John Benediktsson
2 ! See http://factorcode.org/license.txt for BSD license
4 USING: accessors arrays combinators io.sockets
5 io.sockets.private kernel sequences system
6 vocabs.parser vocabs.platforms ;
10 USE-WINDOWS: windows.winsock
15 MEMO: IPPROTO_ICMP4 ( -- protocol )
16 "icmp" getprotobyname proto>> ;
18 MEMO: IPPROTO_ICMP6 ( -- protocol )
19 "ipv6-icmp" getprotobyname proto>> ;
21 GENERIC: with-icmp ( addrspec -- addrspec )
30 M: ipv4 with-icmp host>> <icmp4> ;
32 M: icmp4 protocol drop IPPROTO_ICMP4 ;
34 M: icmp4 port>> drop 0 ;
36 M: icmp4 parse-sockaddr call-next-method with-icmp ;
38 M: icmp4 resolve-host 1array ;
43 : <icmp6> ( host -- icmp6 ) 0 icmp6 boa ;
45 M: ipv6 with-icmp host>> <icmp6> ;
47 M: icmp6 protocol drop IPPROTO_ICMP6 ;
49 M: icmp6 port>> drop 0 ;
51 M: icmp6 parse-sockaddr call-next-method with-icmp ;
53 M: icmp6 resolve-host 1array ;
56 TUPLE: icmp < hostname ;
60 M: icmp resolve-host call-next-method [ with-icmp ] map ;