# Copyright 1995,2002 Spider Boardman. # All rights reserved. # # Automatic licensing for this software is available. This software # can be copied and used under the terms of the GNU Public License, # version 1 or (at your option) any later version, or under the # terms of the Artistic license. Both of these can be found with # the Perl distribution, which this software is intended to augment. # # THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR # IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED # WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. # rcsid: "@(#) $Id: Inet.dat,v 1.26 2002/03/30 10:10:39 spider Exp $" package Net::Inet; use 5.004_04; # new minimum Perl version for this package use strict; # use Carp; sub croak { require Carp; goto &Carp::croak; } sub carp { require Carp; goto &Carp::carp; } use vars qw($VERSION @ISA @EXPORT @EXPORT_OK %EXPORT_TAGS $AUTOLOAD); BEGIN { $VERSION = '1.0'; eval "sub Version () { __PACKAGE__ . ' v$VERSION' }"; } use AutoLoader; #use Exporter (); use Net::Gen 1.0 qw(:ALL); use Socket qw(/^inet_/); BEGIN { @ISA = 'Net::Gen'; # Items to export into callers namespace by default # (move infrequently used names to @EXPORT_OK below) @EXPORT = qw( INADDR_ALLHOSTS_GROUP INADDR_ALLRTRS_GROUP INADDR_ANY INADDR_BROADCAST INADDR_LOOPBACK INADDR_MAX_LOCAL_GROUP INADDR_NONE INADDR_UNSPEC_GROUP IPPORT_RESERVED IPPORT_USERRESERVED IPPORT_DYNAMIC IPPROTO_EGP IPPROTO_EON IPPROTO_GGP IPPROTO_HELLO IPPROTO_ICMP IPPROTO_IDP IPPROTO_IGMP IPPROTO_IP IPPROTO_IPIP IPPROTO_MAX IPPROTO_PUP IPPROTO_RAW IPPROTO_RSVP IPPROTO_TCP IPPROTO_TP IPPROTO_UDP htonl htons inet_addr inet_aton inet_ntoa ntohl ntohs ); # Other items we are prepared to export if requested @EXPORT_OK = qw( DEFTTL ICMP_ADVLENMIN ICMP_ECHO ICMP_ECHOREPLY ICMP_INFOTYPE ICMP_IREQ ICMP_IREQREPLY ICMP_MASKLEN ICMP_MASKREPLY ICMP_MASKREQ ICMP_MAXTYPE ICMP_MINLEN ICMP_PARAMPROB ICMP_REDIRECT ICMP_REDIRECT_HOST ICMP_REDIRECT_NET ICMP_REDIRECT_TOSHOST ICMP_REDIRECT_TOSNET ICMP_SOURCEQUENCH ICMP_TIMXCEED ICMP_TIMXCEED_INTRANS ICMP_TIMXCEED_REASS ICMP_TSLEN ICMP_TSTAMP ICMP_TSTAMPREPLY ICMP_UNREACH ICMP_UNREACH_HOST ICMP_UNREACH_NEEDFRAG ICMP_UNREACH_NET ICMP_UNREACH_PORT ICMP_UNREACH_PROTOCOL ICMP_UNREACH_SRCFAIL IN_BADCLASS IN_CLASSA IN_CLASSA_HOST IN_CLASSA_MAX IN_CLASSA_NET IN_CLASSA_NSHIFT IN_CLASSA_SUBHOST IN_CLASSA_SUBNET IN_CLASSA_SUBNSHIFT IN_CLASSB IN_CLASSB_HOST IN_CLASSB_MAX IN_CLASSB_NET IN_CLASSB_NSHIFT IN_CLASSB_SUBHOST IN_CLASSB_SUBNET IN_CLASSB_SUBNSHIFT IN_CLASSC IN_CLASSC_HOST IN_CLASSC_MAX IN_CLASSC_NET IN_CLASSC_NSHIFT IN_CLASSD IN_CLASSD_HOST IN_CLASSD_NET IN_CLASSD_NSHIFT IN_EXPERIMENTAL IN_LOOPBACKNET IN_MULTICAST IPFRAGTTL IPOPT_CIPSO IPOPT_CLASS IPOPT_CONTROL IPOPT_COPIED IPOPT_DEBMEAS IPOPT_EOL IPOPT_LSRR IPOPT_MINOFF IPOPT_NOP IPOPT_NUMBER IPOPT_OFFSET IPOPT_OLEN IPOPT_OPTVAL IPOPT_RESERVED1 IPOPT_RESERVED2 IPOPT_RIPSO_AUX IPOPT_RR IPOPT_SATID IPOPT_SECURITY IPOPT_SECUR_CONFID IPOPT_SECUR_EFTO IPOPT_SECUR_MMMM IPOPT_SECUR_RESTR IPOPT_SECUR_SECRET IPOPT_SECUR_TOPSECRET IPOPT_SECUR_UNCLASS IPOPT_SSRR IPOPT_TS IPOPT_TS_PRESPEC IPOPT_TS_TSANDADDR IPOPT_TS_TSONLY IPPORT_TIMESERVER IPTOS_LOWDELAY IPTOS_PREC_CRITIC_ECP IPTOS_PREC_FLASH IPTOS_PREC_FLASHOVERRIDE IPTOS_PREC_IMMEDIATE IPTOS_PREC_INTERNETCONTROL IPTOS_PREC_NETCONTROL IPTOS_PREC_PRIORITY IPTOS_PREC_ROUTINE IPTOS_RELIABILITY IPTOS_THROUGHPUT IPTTLDEC IPVERSION IP_ADD_MEMBERSHIP IP_DEFAULT_MULTICAST_LOOP IP_DEFAULT_MULTICAST_TTL IP_DF IP_DROP_MEMBERSHIP IP_HDRINCL IP_MAXPACKET IP_MAX_MEMBERSHIPS IP_MF IP_MSS IP_MULTICAST_IF IP_MULTICAST_LOOP IP_MULTICAST_TTL IP_OPTIONS IP_RECVDSTADDR IP_RECVOPTS IP_RECVRETOPTS IP_RETOPTS IP_TOS IP_TTL MAXTTL MAX_IPOPTLEN MINTTL SUBNETSHIFT pack_sockaddr_in unpack_sockaddr_in ); %EXPORT_TAGS = ( sockopts => [qw(IP_HDRINCL IP_RECVDSTADDR IP_RECVOPTS IP_RECVRETOPTS IP_TOS IP_TTL IP_ADD_MEMBERSHIP IP_DROP_MEMBERSHIP IP_MULTICAST_IF IP_MULTICAST_LOOP IP_MULTICAST_TTL IP_OPTIONS IP_RETOPTS)], routines => [qw(pack_sockaddr_in unpack_sockaddr_in inet_ntoa inet_aton inet_addr htonl ntohl htons ntohs ICMP_INFOTYPE IN_BADCLASS IN_EXPERIMENTAL IN_MULTICAST IPOPT_CLASS IPOPT_COPIED IPOPT_NUMBER)], icmpvalues => [qw(ICMP_ADVLENMIN ICMP_ECHO ICMP_ECHOREPLY ICMP_IREQ ICMP_IREQREPLY ICMP_MASKLEN ICMP_MASKREPLY ICMP_MASKREQ ICMP_MAXTYPE ICMP_MINLEN ICMP_PARAMPROB ICMP_REDIRECT ICMP_REDIRECT_HOST ICMP_REDIRECT_NET ICMP_REDIRECT_TOSHOST ICMP_REDIRECT_TOSNET ICMP_SOURCEQUENCH ICMP_TIMXCEED ICMP_TIMXCEED_INTRANS ICMP_TIMXCEED_REASS ICMP_TSLEN ICMP_TSTAMP ICMP_TSTAMPREPLY ICMP_UNREACH ICMP_UNREACH_HOST ICMP_UNREACH_NEEDFRAG ICMP_UNREACH_NET ICMP_UNREACH_PORT ICMP_UNREACH_PROTOCOL ICMP_UNREACH_SRCFAIL)], ipoptions => [qw(IPOPT_CIPSO IPOPT_CONTROL IPOPT_DEBMEAS IPOPT_EOL IPOPT_LSRR IPOPT_MINOFF IPOPT_NOP IPOPT_OFFSET IPOPT_OLEN IPOPT_OPTVAL IPOPT_RESERVED1 IPOPT_RESERVED2 IPOPT_RIPSO_AUX IPOPT_RR IPOPT_SATID IPOPT_SECURITY IPOPT_SECUR_CONFID IPOPT_SECUR_EFTO IPOPT_SECUR_MMMM IPOPT_SECUR_RESTR IPOPT_SECUR_SECRET IPOPT_SECUR_TOPSECRET IPOPT_SECUR_UNCLASS IPOPT_SSRR IPOPT_TS IPOPT_TS_PRESPEC IPOPT_TS_TSANDADDR IPOPT_TS_TSONLY MAX_IPOPTLEN)], iptosvalues => [qw(IPTOS_LOWDELAY IPTOS_PREC_CRITIC_ECP IPTOS_PREC_FLASH IPTOS_PREC_FLASHOVERRIDE IPTOS_PREC_IMMEDIATE IPTOS_PREC_INTERNETCONTROL IPTOS_PREC_NETCONTROL IPTOS_PREC_PRIORITY IPTOS_PREC_ROUTINE IPTOS_RELIABILITY IPTOS_THROUGHPUT)], protocolvalues => [qw(DEFTTL INADDR_ALLHOSTS_GROUP INADDR_ALLRTRS_GROUP INADDR_ANY INADDR_BROADCAST INADDR_LOOPBACK INADDR_MAX_LOCAL_GROUP INADDR_NONE INADDR_UNSPEC_GROUP IN_LOOPBACKNET IPPORT_RESERVED IPPORT_USERRESERVED IPPORT_DYNAMIC IPPROTO_EGP IPPROTO_EON IPPROTO_GGP IPPROTO_HELLO IPPROTO_ICMP IPPROTO_IDP IPPROTO_IGMP IPPROTO_IP IPPROTO_IPIP IPPROTO_MAX IPPROTO_PUP IPPROTO_RAW IPPROTO_RSVP IPPROTO_TCP IPPROTO_TP IPPROTO_UDP IPFRAGTTL IPTTLDEC IPVERSION IP_DF IP_MAXPACKET IP_MF IP_MSS MAXTTL MAX_IPOPTLEN MINTTL)], ipmulticast => [qw(IP_ADD_MEMBERSHIP IP_DEFAULT_MULTICAST_LOOP IP_DEFAULT_MULTICAST_TTL IP_DROP_MEMBERSHIP IP_MAX_MEMBERSHIPS IP_MULTICAST_IF IP_MULTICAST_LOOP IP_MULTICAST_TTL)], deprecated => [qw(IN_CLASSA_HOST IN_CLASSA_MAX IN_CLASSA_NET IN_CLASSA_NSHIFT IN_CLASSA_SUBHOST IN_CLASSA_SUBNET IN_CLASSA_SUBNSHIFT IN_CLASSB_HOST IN_CLASSB_MAX IN_CLASSB_NET IN_CLASSB_NSHIFT IN_CLASSB_SUBHOST IN_CLASSB_SUBNET IN_CLASSB_SUBNSHIFT IN_CLASSC_HOST IN_CLASSC_MAX IN_CLASSC_NET IN_CLASSC_NSHIFT IN_CLASSD_HOST IN_CLASSD_NET IN_CLASSD_NSHIFT IN_CLASSA IN_CLASSB IN_CLASSC IN_CLASSD IPPORT_TIMESERVER SUBNETSHIFT)], ALL => [@EXPORT, @EXPORT_OK], ); } # sub AUTOLOAD inherited from Net::Gen # inherited autoload for 'regular' subroutines is being removed in # 5.003_96, so cheat a little. sub AUTOLOAD { $Net::Gen::AUTOLOAD = $AUTOLOAD; goto &Net::Gen::AUTOLOAD; } # Preloaded methods go here. Autoload methods go after __END__, and are # processed by the autosplit program. my %sockopts; %sockopts = ( # socket options from the list above # simple booleans first 'IP_HDRINCL' => ['I'], 'IP_RECVDSTADDR' => ['I'], 'IP_RECVOPTS' => ['I'], 'IP_RECVRETOPTS' => ['I'], # simple integer options 'IP_TOS' => ['I'], 'IP_TTL' => ['I'], # structured options 'IP_ADD_MEMBERSHIP'=> ['a4a4'], # ip_mreq 'IP_DROP_MEMBERSHIP'=> ['a4a4'], # ip_mreq 'IP_MULTICAST_IF' => ['a4'], # inet_addr 'IP_MULTICAST_LOOP'=> ['C'], # u_char 'IP_MULTICAST_TTL' => ['C'], # u_char 'IP_OPTIONS' => ['a4C40'], # ip_options 'IP_RETOPTS' => ['a4C40'], # ip_options # out of known IP options ); __PACKAGE__->initsockopts( IPPROTO_IP(), \%sockopts ); #& htonl($number||@numbers) : $number || @numbers sub htonl { return unless defined wantarray; carp "Wrong number of arguments ($#_) to " . __PACKAGE__ . "::htonl, called" if @_ != 1 and !wantarray; unpack('N*', pack('L*', @_)); } #& htons($number||@numbers) : $number || @numbers sub htons { return unless defined wantarray; carp "Wrong number of arguments ($#_) to " . __PACKAGE__ . "::htons, called" if @_ != 1 and !wantarray; unpack('n*', pack('S*', @_)); } #& ntohl($number||@numbers) : $number || @numbers sub ntohl { return unless defined wantarray; carp "Wrong number of arguments ($#_) to " . __PACKAGE__ . "::ntohl, called" if @_ != 1 and !wantarray; unpack('L*', pack('N*', @_)); } #& ntohs($number||@numbers) : $number || @numbers sub ntohs { return unless defined wantarray; carp "Wrong number of arguments ($#_) to " . __PACKAGE__ . "::ntohs, called" if @_ != 1 and !wantarray; unpack('S*', pack('n*', @_)); } # removed inet_ntoa that was here -- the one in Socket is (now) good enough #& pack_sockaddr_in([$family,] $port, $in_addr) : $packed_addr sub pack_sockaddr_in ($$;$) { unshift(@_,AF_INET) if @_ == 2; _pack_sockaddr_in($_[0], $_[1], $_[2]); } # sub unpack_sockaddr_in is in XS code # Get the prototypes right for the autoloaded values, to avoid confusing # the caller's code with changes in prototypes. # sub inet_aton in Socket.xs sub inet_addr; # (helps with -w) *inet_addr = \&inet_aton; # same code for old interface my $debug = 0; #& _debug($this, [$newval]) : oldval #+attrs locked sub _debug { my ($this,$newval) = @_; return $this->debug($newval) if ref $this; my $prev = $debug; $debug = 0+$newval if defined $newval; $prev; } my %keyhandlers; my @hostkeys = qw(thishost desthost); @keyhandlers{@hostkeys} = (\&_sethost) x @hostkeys; my @portkeys = qw(thisservice thisport destservice destport); @keyhandlers{@portkeys} = (\&_setport) x @portkeys; my @protokeys = qw(IPproto proto); @keyhandlers{@protokeys} = (\&_setproto) x @protokeys; # Don't include "handled" keys in this list, since that's redundant. my @Keys = qw(lclhost lcladdr lclservice lclport remhost remaddr remservice remport); # leave these to be init'ed on the first new() call my (%Keys,%Sopts); #& new($class, [\%params]) : {$obj | undef} sub new { my $whoami = $_[0]->_trace(\@_,1); my($class,@Args,$self) = @_; $self = $class->SUPER::new(@Args); $class = ref $class if ref $class; $class->_trace(\@_,2,", self" . (defined $self ? "=$self" : " undefined") . " after sub-new"); if ($self) { CORE::dump if $debug > 1 and ref $self ne $class || "$self" !~ /HASH/; # init object debug level $self->setparams({'debug'=>$debug},-1); if (%Keys) { $ {*$self}{Keys} = { %Keys } ; } else { # register our keys and their handlers $self->register_param_keys(\@Keys); $self->register_param_handlers(\%keyhandlers); %Keys = %{ $ {*$self}{Keys} } ; } if (%Sopts) { $ {*$self}{Sockopts} = { %Sopts } ; } else { # register our socket options $self->register_options('IPPROTO_IP', IPPROTO_IP(), \%sockopts); %Sopts = %{ $ {*$self}{Sockopts} } ; } # set our expected parameters $self->setparams({PF => PF_INET, AF => AF_INET},-1); if ($class eq __PACKAGE__) { unless ($self->init(@Args)) { local $!; # protect returned errno value undef $self; # against close problems inside perl undef $self; # another statement needed for sequencing } } if ($self) { $self->_trace(0,1," returning self=$self"); } else { $class->_trace(0,1," returning self=(undef)"); } } else { $class->_trace(0,1," returning self=(undef)"); } $self; } #& _hostport($self, {'this'|'dest'}, [\]@list) : boolean sub _hostport { my($self,$which,@args,$aref) = @_; $aref = \@args; # assume in-line list unless proved otherwise $aref = $args[0] if @args == 1 && ref $args[0] && ref $args[0] eq 'ARRAY'; return undef if $which ne 'dest' and $which ne 'this'; if (@$aref) { # assume this is ('desthost','destport') my %p; # where we'll build the params list if (@$aref == 3 and ref($$aref[2]) and ref($$aref[2]) eq 'HASH') { %p = %{$$aref[2]}; } else { %p = splice(@$aref,2); # assume valid params after } $p{"${which}host"} = $$aref[0] if defined $$aref[0]; $p{"${which}port"} = $$aref[1] if defined $$aref[1]; $self->setparams(\%p); } else { 1; # succeed vacuously if no work } } #& init($self, [\%params || @speclist]) : {$self | undef} #+attrs locked sub init { $_[0]->_trace(\@_,2); my($self,@args) = @_; return $self unless $self = $self->SUPER::init(@args); if (@args > 1 || @args == 1 && (!ref $args[0] || ref $args[0] ne 'HASH')) { return undef unless $self->_hostport('dest',@args); } # my @r; # dummy array needed in 5.000 # if ((@r=$self->getparams([qw(type proto)],1)) == 4) { # have type and proto if ($self->getparams([qw(type proto)],1) == 4) { # have type and proto unless ($self->open) { # create the socket return undef; # and refuse to make less object than requested } } if ($self->getparam('srcaddrlist')) { # have enough object already to attempt the binding return undef unless $self->bind; # make no less object than requested } if ($self->getparam('dstaddrlist')) { # have enough object already to attempt the connection return undef unless $self->connect or $self->isconnecting and !$self->blocking; # make no less object than requested } # I think this is all we need here ? $self; } #& connect($self, [\]@([host],[port])) : boolean #+attrs locked method sub connect { my($self,@args) = @_; return undef if @args and not $self->_hostport('dest',@args); $self->SUPER::connect; } #& _sethost($self,$key,$newval) : {'' | "carp string"} sub _sethost { my($self,$key,$newval) = @_; return "Invalid args to " . __PACKAGE__ . "::_sethost(@_), called" if @_ != 3 or ref($ {*$self}{Keys}{$key}) ne 'CODE'; # check for call from delparams if (!defined $newval) { my @delkeys; if ($key eq 'thishost') { @delkeys = qw(srcaddrlist srcaddr lclhost lcladdr lclport lclservice); } elsif ($key eq 'desthost') { @delkeys = qw(dstaddrlist dstaddr remhost remaddr remport remservice); } splice(@delkeys, 1) if @delkeys and $self->isconnected; $self->delparams(\@delkeys) if @delkeys; return ''; # ok to delete } # here we're really trying to set some kind of address (we think) my ($pkey,$port); ($pkey = $key) =~ s/host$/port/; my (@addrs,$addr,$cport); ($newval,$cport) = ($1,$2) if $newval =~ m/^(.+):([-\w]+(?:\(\d+\))?)$/; if ($newval =~ m/^(\[?)([a-fx.\d]+)(\]?)$/si) { return "Invalid address literal $newval found" if length($1) != length($3); $addr = inet_aton($2); } if (defined $addr and substr($newval, 0, 1) eq '[') { push(@addrs,$addr); $addr = '[' . inet_ntoa($addr) . ']'; } else { my(@hinfo,$hname); $hname = $newval; do { @hinfo = gethostbyname($hname); } while (!@hinfo && $hname =~ s/\.$//); if (!@hinfo and defined $addr) { push(@addrs, $addr); $addr = inet_ntoa($addr); } else { return "Host $newval not found ($?)," unless @hinfo > 4; return "Host $newval has strange address family ($hinfo[2])," if $self->getparam('AF',AF_INET,1) != $hinfo[2]; @addrs = splice(@hinfo,4); $addr = $hinfo[0]; # save canonical name for real setup # just in case this is /etc/hosts or old sunos, try harder if ($addr !~ /.\../ and $hinfo[1]) { for $hname (split(' ',$hinfo[1])) { if ($hname =~ /.\../) { $addr = $hname; last; } } } } } # valid so far, get out if can't form addresses yet $port = $ {*$self}{Parms}{$pkey}; return '' unless defined $cport or defined $port or $pkey eq 'thisport'; # allow for 'bind' if (defined $cport) { return $newval if $newval = &_setport($self,$pkey,$cport); $port = $cport; } $port = 0 unless defined $port; my $af = $self->getparam('AF',AF_INET,1); for (@addrs) { $_ = pack_sockaddr_in($af, $port+0, $_); } $pkey = (($key eq 'desthost') ? 'dstaddrlist' : 'srcaddrlist'); $self->setparams({$pkey => [@addrs]}); # finally, we have validation $_[2] = $addr; # update the canonical representation to store print STDERR " - " . __PACKAGE__ . "::_sethost $self $key ", $self->format_addr($addr,1),"\n" if $ {*$self}{Parms}{'debug'}; ''; # return nullstring for goodness } # These port assignments were generated from IANA's list of assigned ports # as of 1997/05/17. my %udp_ports; my $udp_ports = "tcpmux 1 rje 5 echo 7 discard 9 null 9 sink 9 systat 11 daytime 13 netstat 15 qotd 17 quote 17 msp 18 chargen 19 source 19 ttytst 19 ftp-data 20 ftp 21 ssh 22 telnet 23 mail 25 smtp 25 nsw-fe 27 msg-icp 29 msg-auth 31 dsp 33 time 37 rap 38 rlp 39 graphics 41 name 42 nameserver 42 nicname 43 whois 43 mpm-flags 44 mpm 45 mpm-snd 46 ni-ftp 47 auditd 48 tacacs 49 re-mail-ck 50 la-maint 51 xns-time 52 dns 53 domain 53 xns-ch 54 isi-gl 55 xns-auth 56 xns-mail 58 ni-mail 61 acas 62 whois++ 63 covia 64 tacacs-ds 65 sql*net 66 bootp 67 bootps 67 bootpc 68 tftp 69 gopher 70 netrjs-1 71 netrjs-2 72 netrjs-3 73 netrjs-4 74 deos 76 vettcp 78 finger 79 http 80 www 80 www-http 80 hosts2-ns 81 xfer 82 ctf 84 mfcobol 86 kerberos 88 su-mit-tg 89 dnsix 90 mit-dov 91 npp 92 dcp 93 objcall 94 supdup 95 dixie 96 swift-rvf 97 tacnews 98 metagram 99 hostname 101 hostnames 101 iso-tsap 102 gppitnp 103 acr-nema 104 csnet-ns 105 3com-tsmux 106 rtelnet 107 snagas 108 pop2 109 pop3 110 sunrpc 111 mcidas 112 auth 113 ident 113 audionews 114 sftp 115 ansanotify 116 uucp-path 117 sqlserv 118 nntp 119 untp 119 cfdptkt 120 erpc 121 smakynet 122 ntp 123 ansatrader 124 locus-map 125 unitary 126 locus-con 127 gss-xlicen 128 pwdgen 129 cisco-fna 130 cisco-tna 131 cisco-sys 132 statsrv 133 ingres-net 134 epmap 135 profile 136 netbios-ns 137 netbios-dgm 138 netbios-ssn 139 emfis-data 140 emfis-cntl 141 bl-idm 142 imap 143 news 144 uaac 145 iso-tp0 146 iso-ip 147 jargon 148 aed-512 149 sql-net 150 hems 151 bftp 152 sgmp 153 netsc-prod 154 netsc-dev 155 sqlsrv 156 knet-cmp 157 pcmail-srv 158 nss-routing 159 sgmp-traps 160 snmp 161 snmp-trap 162 snmptrap 162 cmip-man 163 smip-agent 164 xns-courier 165 s-net 166 namp 167 snmp-rt 167 rsvd 168 send 169 print-srv 170 multiplex 171 cl/1 172 xyplex-mux 173 mailq 174 vmnet 175 genrad-mux 176 xdmcp 177 nextstep 178 bgp 179 ris 180 unify 181 audit 182 ocbinder 183 ocserver 184 remote-kis 185 kis 186 aci 187 mumps 188 qft 189 cacp 190 gacp 190 prospero 191 osu-nms 192 srmp 193 irc 194 dn6-nlm-aud 195 dn6-smm-red 196 dlsold 197 dls-mon 198 smux 199 src 200 at-rtmp 201 at-nbp 202 at-3 203 at-echo 204 at-5 205 at-zis 206 at-7 207 at-8 208 qmtp 209 z39.50 210 914c/g 211 anet 212 ipx 213 vmpwscs 214 softpc 215 cailic 216 dbase 217 mpp 218 uarps 219 imap3 220 fln-spx 221 rsh-spx 222 cdc 223 direct 242 sur-meas 243 dayna 244 link 245 dsp3270 246 ibm-rap 256 set 257 yak-chat 258 esro-gen 259 openport 260 nsiiops 261 arcisdms 262 hdap 263 http-mgmt 280 personal-link 281 cableport-ax 282 entrusttime 309 pdap 344 pawserv 345 zserv 346 fatserv 347 csi-sgwp 348 matip-type-a 350 matip-type-b 351 dtag-ste-sb 352 clearcase 371 ulistproc 372 legent-1 373 legent-2 374 hassle 375 nip 376 tnetos 377 dsetos 378 is99c 379 is99s 380 hp-collector 381 hp-managed-node 382 hp-alarm-mgr 383 arns 384 ibm-app 385 asa 386 aurp 387 unidata-ldm 388 ldap 389 uis 390 synotics-relay 391 synotics-broker 392 dis 393 embl-ndt 394 netcp 395 netware-ip 396 mptn 397 kryptolan 398 iso-tsap-c2 399 work-sol 400 ups 401 genie 402 decap 403 nced 404 ncld 405 imsp 406 timbuktu 407 prm-sm 408 prm-nm 409 decladebug 410 rmt 411 synoptics-trap 412 smsp 413 infoseek 414 bnet 415 silverplatter 416 onmux 417 hyper-g 418 ariel1 419 smpte 420 ariel2 421 ariel3 422 opc-job-start 423 opc-job-track 424 icad-el 425 smartsdp 426 svrloc 427 ocs_cmu 428 ocs_amu 429 utmpsd 430 utmpcd 431 iasd 432 nnsp 433 mobileip-agent 434 mobilip-mn 435 dna-cml 436 comscm 437 dsfgw 438 dasp 439 sgcp 440 decvms-sysmgt 441 cvc_hostd 442 https 443 shttp 443 snpp 444 microsoft-ds 445 ddm-rdb 446 ddm-dfm 447 ddm-byte 448 as-servermap 449 tserver 450 sfs-smp-net 451 sfs-config 452 creativeserver 453 contentserver 454 creativepartnr 455 macon-udp 456 scohelp 457 appleqtc 458 ampr-rcmd 459 skronk 460 datarampsrv 461 datasurfsrv 461 datarampsrvsec 462 datasurfsrvsec 462 alpes 463 kpasswd 464 smtps 465 ssmtp 465 digital-vrc 466 mylex-mapd 467 photuris 468 rcp 469 scx-proxy 470 mondex 471 ljk-login 472 hybrid-pop 473 tn-tl-w2 474 tn-tl-fd1 476 ss7ns 477 spsc 478 iafserver 479 iafdbase 480 ph 481 bgs-nsi 482 ulpnet 483 integra-sme 484 powerburst 485 avian 486 saft 487 gss-http 488 nest-protocol 489 micom-pfs 490 go-login 491 ticf-1 492 ticf-2 493 pov-ray 494 intecourier 495 pim-rp-disc 496 dantz 497 siam 498 iso-ill 499 isakmp 500 stmf 501 asa-appl-proto 502 intrinsa 503 citadel 504 mailbox-lm 505 ohimsrv 506 crs 507 xvttp 508 snare 509 fcp 510 firstclass 510 mynet 511 mynet-as 511 biff 512 comsat 512 rwho 513 who 513 whod 513 syslog 514 printer 515 spooler 515 videotex 516 otalk 517 talk 517 ntalk 518 unixtime 519 utime 519 route 520 routed 520 router 520 ripng 521 ulp 522 ncp 524 timed 525 timeserver 525 newdate 526 tempo 526 stx 527 custix 528 courier 530 rpc 530 chat 531 conference 531 netnews 532 readnews 532 netwall 533 mm-admin 534 iiop 535 opalis-rdv 536 netmsp 537 gdomap 538 apertus-ldp 539 uucp 540 uucpd 540 uucp-rlogin 541 commerce 542 klogin 543 krcmd 544 kshell 544 appleqtcsrvr 545 dhcpv6-client 546 dhcpv6-server 547 afpovertcp 548 idfp 549 new-rwho 550 new-who 550 cybercash 551 deviceshare 552 pirp 553 rtsp 554 dsf 555 brfs 556 remotefs 556 rfs 556 rfs_server 556 openvms-sysipc 557 sdnskmp 558 teedtap 559 rmonitor 560 rmonitord 560 monitor 561 chcmd 562 chshell 562 nntps 563 snntp 563 9pfs 564 whoami 565 streettalk 566 banyan-rpc 567 ms-shuttle 568 ms-rome 569 demon 570 meter_demon 570 meterd 570 meter 571 udemon 571 sonar 572 banyan-vip 573 ftp-agent 574 vemmi 575 ipcd 576 vnas 577 ipdd 578 decbsrv 579 sntp-heartbeat 580 bdp 581 scc-security 582 philips-vc 583 keyserver 584 imap4-ssl 585 password-chg 586 submission 587 ipcserver 600 urm 606 nqs 607 sift-uft 608 npmp-trap 609 npmp-local 610 npmp-gui 611 hmmp-ind 612 hmmp-op 613 sshell 614 sslshell 614 sco-inetmgr 615 sco-sysmgr 616 sco-dtmgr 617 dei-icda 618 digital-evm 619 sco-websrvrmgr 620 escp-ip 621 servstat 633 ginad 634 rlzdbase 635 ldaps 636 sldap 636 lanserver 637 doom 666 mdqs 666 disclose 667 mecomm 668 meregister 669 vacdsm-sws 670 vacdsm-app 671 vpps-qua 672 cimplex 673 acap 674 elcsd 704 errlog 704 agentx 705 entrust-kmsh 709 entrust-ash 710 netviewdm1 729 netviewdm2 730 netviewdm3 731 netgw 741 netrcs 742 flexlm 744 fujitsu-dev 747 ris-cm 748 kerberos-adm 749 kerberos-iv 750 loadav 750 pump 751 qrh 752 rrh 753 tell 754 nlogin 758 con 759 ns 760 rxe 761 quotad 762 cycleserv 763 omserv 764 webster 765 phone 767 phonebook 767 vid 769 cadlock 770 rtip 771 cycleserv2 772 notify 773 acmaint_dbd 774 acmaint_transd 775 wpages 776 wpgs 780 concert 786 mdbs_daemon 800 device 801 iclcnet-locate 886 iclcnet_svinfo 887 accessbuilder 888 ftps-data 989 ftps 990 nas 991 stelnet 992 telnets 992 imap4s 993 imaps 993 simap4 993 ircs 994 sirc 994 pop3s 995 spop3 995 vsinet 996 maitrd 997 puparp 998 applix 999 puprouter 999 ock 1000 blackjack 1025 iad1 1030 iad2 1031 iad3 1032 neod1 1047 neod2 1048 nim 1058 nimreg 1059 instl_boots 1067 instl_bootc 1068 socks 1080 ansoft-lm-1 1083 ansoft-lm-2 1084 nfsd-keepalive 1110 lmsocialserver 1111 murray 1123 nfa 1155 mc-client 1180 lupa 1212 nerv 1222 hermes 1248 bmc-patroldb 1313 pdps 1314 vpjp 1345 alta-ana-lm 1346 bbn-mmc 1347 bbn-mmx 1348 sbook 1349 editbench 1350 equationbuilder 1351 lotusnote 1352 relief 1353 rightbrain 1354 edge 1355 intuitive 1355 intuitive-edge 1355 cuillamartin 1356 pegboard 1357 connlcli 1358 ftsrv 1359 mimer 1360 linx 1361 timeflies 1362 ndm-requester 1363 ndm-server 1364 adapt-sna 1365 netware-csp 1366 dcs 1367 screencast 1368 gv-us 1369 us-gv 1370 fc-cli 1371 fc-ser 1372 chromagrafx 1373 molly 1374 bytex 1375 ibm-pps 1376 cichlid 1377 elan 1378 dbreporter 1379 telesis-licman 1380 apple-licman 1381 gwha 1383 os-licman 1384 atex_elmd 1385 checksum 1386 cadsi-lm 1387 objective-dbc 1388 iclpv-dm 1389 iclpv-sc 1390 iclpv-sas 1391 iclpv-pm 1392 iclpv-nls 1393 iclpv-nlc 1394 iclpv-wsm 1395 dvl-activemail 1396 audio-activmail 1397 video-activmail 1398 cadkey-licman 1399 cadkey-tablet 1400 usim 1400 goldleaf-licman 1401 prm-sm-np 1402 prm-nm-np 1403 igi-lm 1404 ibm-res 1405 netlabs-lm 1406 dbsa-lm 1407 sophia-lm 1408 here-lm 1409 hiq 1410 af 1411 innosys 1412 innosys-acl 1413 ibm-mqseries 1414 dbstar 1415 novell-lu6.2 1416 timbuktu-srv2 1418 timbuktu-srv3 1419 timbuktu-srv4 1420 gandalf-lm 1421 autodesk-lm 1422 essbase 1423 hybrid 1424 zion-lm 1425 sais 1426 mloadd 1427 informatik-lm 1428 nms 1429 tpdu 1430 rgtp 1431 blueberry-lm 1432 ms-sql-s 1433 ms-sql-m 1434 ibm-cics 1435 saism 1436 tabula 1437 eicon-server 1438 eicon-x25 1439 eicon-slp 1440 cadis-1 1441 cadis-2 1442 ies-lm 1443 marcam-lm 1444 proxima-lm 1445 ora-lm 1446 apri-lm 1447 oc-lm 1448 peport 1449 dwf 1450 infoman 1451 gtegsc-lm 1452 genie-lm 1453 esl-lm 1455 dca 1456 valisys-lm 1457 nrcabq-lm 1458 proshare1 1459 proshare2 1460 ibm_wrless_lan 1461 world-lm 1462 nucleus 1463 msl_lmd 1464 pipes 1465 oceansoft-lm 1466 aal-lm 1469 uaiact 1470 csdmbase 1471 csdm 1472 openmath 1473 telefinder 1474 taligent-lm 1475 clvm-cfg 1476 ms-sna-server 1477 ms-sna-base 1478 dberegister 1479 pacerforum 1480 airs 1481 miteksys-lm 1482 afs 1483 confluent 1484 lansource 1485 nms_topo_serv 1486 localinfosrvr 1487 docstor 1488 dmdocbroker 1489 insitu-conf 1490 anynetgateway 1491 stone-design-1 1492 netmap_lm 1493 ica 1494 cvc 1495 liberty-lm 1496 rfx-lm 1497 watcom-sql 1498 fhc 1499 vlsi-lm 1500 saiscm 1501 shivadiscovery 1502 databeam 1503 imtc-mcs 1503 evb-elm 1504 funkproxy 1505 utcd 1506 symplex 1507 diagmond 1508 robcad-lm 1509 mvx-lm 1510 3l-l1 1511 wins 1512 fujitsu-dtc 1513 fujitsu-dtcns 1514 ifor-protocol 1515 vpad 1516 vpac 1517 vpvd 1518 vpvc 1519 atm-zip-office 1520 ncube-lm 1521 cichild-lm 1523 ingreslock 1524 orasrv 1525 prospero-np 1525 pdap-np 1526 tlisrv 1527 mciautoreg 1528 coauthor 1529 rap-service 1530 rap-listen 1531 miroconnect 1532 virtual-places 1533 micromuse-lm 1534 ampr-info 1535 ampr-inter 1536 sdsc-lm 1537 3ds-lm 1538 intellistor-lm 1539 rds 1540 rds2 1541 gridgen-elmd 1542 simba-cs 1543 aspeclmd 1544 vistium-share 1545 abbaccuray 1546 laplink 1547 axon-lm 1548 shivasound 1549 3m-image-lm 1550 hecmtl-db 1551 pciarray 1552 sna-cs 1553 caci-lm 1554 livelan 1555 ashwin 1556 arbortext-lm 1557 xingmpeg 1558 web2host 1559 asci-val 1560 facilityview 1561 pconnectmgr 1562 cadabra-lm 1563 pay-per-view 1564 windd 1565 winddlb 1565 corelvideo 1566 jlicelmd 1567 tsspmap 1568 ets 1569 orbixd 1570 rdb-dbs-disp 1571 chip-lm 1572 itscomm-ns 1573 mvel-lm 1574 oraclenames 1575 moldflow-lm 1576 hypercube-lm 1577 jacobus-lm 1578 tn-tl-r2 1580 vmf-msg-port 1581 msims 1582 simbaexpress 1583 tn-tl-fd2 1584 intv 1585 ibm-abtact 1586 pra_elmd 1587 triquest-lm 1588 vqp 1589 gemini-lm 1590 ncpm-pm 1591 commonspace 1592 mainsoft-lm 1593 sixtrak 1594 radio 1595 radio-bc 1596 orbplus-iiop 1597 picknfs 1598 simbaservices 1599 issd 1600 aas 1601 dec-inspect 1602 picodbc 1603 icabrowser 1604 slp 1605 slm-api 1606 stt 1607 smart-lm 1608 isysg-lm 1609 taurus-wh 1610 ill 1611 netbill-trans 1612 netbill-keyrep 1613 netbill-cred 1614 netbill-auth 1615 netbill-prod 1616 nimrod-agent 1617 skytelnet 1618 xs-openstorage 1619 faxportwinport 1620 softdataphone 1621 ontime 1622 jaleosnd 1623 udp-sr-port 1624 svs-omagent 1625 cncp 1636 cnap 1637 cnip 1638 cert-initiator 1639 cert-responder 1640 invision 1641 isis-am 1642 isis-ambc 1643 datametrics 1645 sa-msg-port 1646 rsap 1647 concurrent-lm 1648 inspect 1649 nkd 1650 shiva_confsrvr 1651 xnmp 1652 alphatech-lm 1653 stargatealerts 1654 dec-mbadmin 1655 dec-mbadmin-h 1656 fujitsu-mmpdc 1657 sixnetudr 1658 sg-lm 1659 skip-mc-gikreq 1660 netview-aix-1 1661 netview-aix-2 1662 netview-aix-3 1663 netview-aix-4 1664 netview-aix-5 1665 netview-aix-6 1666 netview-aix-7 1667 netview-aix-8 1668 netview-aix-9 1669 netview-aix-10 1670 netview-aix-11 1671 netview-aix-12 1672 proshare-mc-1 1673 proshare-mc-2 1674 pdp 1675 netcomm2 1676 groupwise 1677 prolink 1678 darcorp-lm 1679 microcom-sbp 1680 sd-elmd 1681 lanyon-lantern 1682 ncpm-hip 1683 snaresecure 1684 n2nremote 1685 cvmon 1686 nsjtp-ctrl 1687 nsjtp-data 1688 firefox 1689 ng-umds 1690 empire-empuma 1691 sstsys-lm 1692 rrirtr 1693 rrimwm 1694 rrilwm 1695 rrifmm 1696 rrisat 1697 rsvp-encap-1 1698 rsvp-encap-2 1699 mps-raft 1700 l2f 1701 deskshare 1702 hb-engine 1703 bcs-broker 1704 slingshot 1705 jetform 1706 vdmplay 1707 gat-lmd 1708 centra 1709 impera 1710 pptconference 1711 registrar 1712 conferencetalk 1713 sesi-lm 1714 houdini-lm 1715 xmsg 1716 fj-hdnet 1717 h323gatedisc 1718 h323gatestat 1719 h323hostcall 1720 caicci 1721 hks-lm 1722 pptp 1723 csbphonemaster 1724 iden-ralp 1725 winddx 1727 telindus 1728 citynl 1729 roketz 1730 msiccp 1731 proxim 1732 sipat 1733 cambertx-lm 1734 privatechat 1735 street-stream 1736 ultimad 1737 gamegen1 1738 webaccess 1739 encore 1740 cisco-net-mgmt 1741 3com-nsd 1742 cinegrfx-lm 1743 ncpm-ft 1744 remote-winsock 1745 ftrapid-1 1746 ftrapid-2 1747 oracle-em1 1748 aspen-services 1749 sslp 1750 swiftnet 1751 lofr-lm 1752 translogic-lm 1753 oracle-em2 1754 ms-streaming 1755 capfast-lmd 1756 cnhrp 1757 tftp-mcast 1758 spss-lm 1759 www-ldap-gw 1760 cft-0 1761 cft-1 1762 cft-2 1763 cft-3 1764 cft-4 1765 cft-5 1766 cft-6 1767 cft-7 1768 bmc-net-adm 1769 bmc-net-svc 1770 vaultbase 1771 essweb-gw 1772 kmscontrol 1773 global-dtserv 1774 femis 1776 powerguardian 1777 prodigy-internet 1778 pharmasoft 1779 dpkeyserv 1780 answersoft-lm 1781 hp-hcip 1782 fjris 1783 finle-lm 1784 windlm 1785 funk-logger 1786 funk-license 1787 psmond 1788 hello 1789 nmsp 1790 ea1 1791 ibm-dt-2 1792 rsc-robot 1793 cera-bcm 1794 dpi-proxy 1795 vocaltec-admin 1796 uma 1797 etp 1798 netrisk 1799 ansys-lm 1800 msmq 1801 concomp1 1802 hp-hcip-gwy 1803 enl 1804 enl-name 1805 musiconline 1806 fhsp 1807 oracle-vp2 1808 oracle-vp1 1809 jerand-lm 1810 scientia-sdb 1811 radius 1812 radius-acct 1813 tdp-suite 1814 mmpft 1815 etftp 1818 plato-lm 1819 mcagent 1820 donnyworld 1821 es-elmd 1822 unisys-lm 1823 metrics-pas 1824 fjicl-tep-a 1901 fjicl-tep-b 1902 linkname 1903 fjicl-tep-c 1904 sugp 1905 tpmd 1906 tportmapperreq 1906 intrastar 1907 dawn 1908 global-wlink 1909 armadp 1913 elm-momentum 1914 facelink 1915 persoft 1916 noagent 1917 can-nds 1918 can-dch 1919 can-ferret 1920 close-combat 1944 dialogic-elmd 1945 tekpls 1946 eye2eye 1948 ismaeasdaqlive 1949 ismaeasdaqtest 1950 bcs-lmserver 1951 dlsrap 1973 foliocorp 1985 licensedaemon 1986 tr-rsrb-p1 1987 tr-rsrb-p2 1988 mshnet 1989 tr-rsrb-p3 1989 stun-p1 1990 stun-p2 1991 ipsendmsg 1992 stun-p3 1992 snmp-tcp-port 1993 stun-port 1994 perf-port 1995 tr-rsrb-port 1996 gdp-port 1997 x25-svc-port 1998 tcp-id-port 1999 callbook 2000 curry 2001 wizard 2001 globe 2002 emce 2004 oracle 2005 raid 2006 raid-cc 2006 raid-am 2007 terminaldb 2008 whosockami 2009 pipe_server 2010 servserv 2011 raid-ac 2012 raid-cd 2013 raid-sf 2014 raid-cs 2015 bootserver 2016 bootclient 2017 rellpack 2018 about 2019 xinupageserver 2020 xinuexpansion1 2021 xinuexpansion2 2022 xinuexpansion3 2023 xinuexpansion4 2024 xribs 2025 scrabble 2026 shadowserver 2027 submitserver 2028 device2 2030 blackboard 2032 glogger 2033 scoremgr 2034 imsldoc 2035 objectmanager 2038 lam 2040 interbase 2041 isis 2042 isis-bcast 2043 rimsl 2044 cdfunc 2045 sdfunc 2046 dls 2047 dls-monitor 2048 nfs 2049 shilp 2049 dlsrpn 2065 dlswpn 2067 zephyr-srv 2102 zephyr-clt 2103 zephyr-hm 2104 minipay 2105 mc-gt-srv 2180 ats 2201 imtc-map 2202 kali 2213 unreg-ab1 2221 unreg-ab2 2222 inreg-ab3 2223 ivs-video 2232 infocrypt 2233 directplay 2234 sercomm-wlink 2235 nani 2236 optech-port1-lm 2237 aviva-sna 2238 imagequery 2239 ivsd 2241 xmquery 2279 lnvpoller 2280 lnvconsole 2281 lnvalarm 2282 lnvstatus 2283 lnvmaps 2284 lnvmailmon 2285 nas-metering 2286 dna 2287 netml 2288 pehelp 2307 sdhelp 2308 cvspserver 2401 rtsserv 2500 rtsclient 2501 netrek 2592 tqdata 2700 www-dev 2784 aic-np 2785 aic-oncrpc 2786 piccolo 2787 fryeserv 2788 media-agent 2789 mao 2908 funk-dialout 2909 tdaccess 2910 blockade 2911 epicon 2912 hbci 3000 redwood-broker 3001 exlm-agent 3002 ping-pong 3010 trusted-web 3011 hlserver 3047 pctrader 3048 nsws 3049 vmodem 3141 rdc-wh-eos 3142 seaview 3143 tarantella 3144 csi-lfap 3145 mc-brk-srv 3180 ccmail 3264 altav-tunnel 3265 ns-cfg-server 3266 ibm-dial-out 3267 msft-gc 3268 msft-gc-ssl 3269 verismart 3270 csoft-prev 3271 user-manager 3272 sxmp 3273 ordinox-server 3274 samd 3275 maxim-asics 3276 dec-notes 3333 bmap 3421 prsvp 3455 vat 3456 vat-control 3457 d3winosfi 3458 integral 3459 udt_os 3900 mapper-nodemgr 3984 mapper-mapethd 3985 mapper-ws_ethd 3986 terabase 4000 netcheque 4008 chimera-hwm 4009 samsung-unidex 4010 altserviceboot 4011 pda-gate 4012 acl-manager 4013 nuts_dem 4132 nuts_bootp 4133 nifty-hmi 4134 oirtgsvc 4141 oidocsvc 4142 oidsr 4143 rwhois 4321 unicall 4343 vinainstall 4344 krb524 4444 nv-video 4444 upnotifyp 4445 n1-fwp 4446 n1-rmgmt 4447 asc-slmd 4448 arcryptoip 4449 camp 4450 ctisystemmsg 4451 ctiprogramload 4452 nssalertmgr 4453 nssagentmgr 4454 sae-urn 4500 urn-x-cdchoice 4501 rfa 4672 commplex-main 5000 commplex-link 5001 rfe 5002 claris-fmpro 5003 avt-profile-1 5004 avt-profile-2 5005 telelpathstart 5010 telelpathattack 5011 zenginkyo-1 5020 zenginkyo-2 5021 mmcc 5050 rmonitor_secure 5145 atmp 5150 aol 5190 aol-1 5191 aol-2 5192 aol-3 5193 padl2sim 5236 hacl-hb 5300 hacl-gs 5301 hacl-cfg 5302 hacl-probe 5303 hacl-local 5304 hacl-test 5305 sun-mc-grp 5306 sco-aip 5307 cfengine 5308 jprinter 5309 outlaws 5310 tmlogin 5311 excerpt 5400 excerpts 5401 mftp 5402 hpoms-ci-lstn 5403 hpoms-dps-lstn 5404 netsupport 5405 systemics-sox 5406 foresyte-clear 5407 foresyte-sec 5408 salient-dtasrv 5409 salient-usrmgr 5410 actnet 5411 continuus 5412 wwiotalk 5413 statusd 5414 ns-server 5415 sns-gateway 5416 sns-agent 5417 mcntp 5418 dj-ice 5419 cylink-c 5420 personal-agent 5555 esmmanager 5600 esmagent 5601 a1-msc 5602 a1-bs 5603 a3-sdunode 5604 a4-sdunode 5605 pcanywheredata 5631 pcanywherestat 5632 rrac 5678 dccm 5679 proshareaudio 5713 prosharevideo 5714 prosharedata 5715 prosharerequest 5716 prosharenotify 5717 openmail 5729 fcopy-server 5745 openmailg 5755 x500ms 5757 openmailns 5766 s-openmail 5767 x11 6000 softcm 6110 spc 6111 dtspcd 6112 backup-express 6123 meta-corp 6141 aspentec-lm 6142 watershed-lm 6143 statsci1-lm 6144 statsci2-lm 6145 lonewolf-lm 6146 montage-lm 6147 tal-pod 6149 crip 6253 clariion-evr01 6389 lvision-lm 6471 xdsxdm 6558 vocaltec-gold 6670 vision_server 6672 vision_elmd 6673 ambit-lm 6831 acmsoda 6969 afs3-fileserver 7000 afs3-callback 7001 afs3-prserver 7002 afs3-vlserver 7003 afs3-kaserver 7004 afs3-volser 7005 afs3-errors 7006 afs3-bos 7007 afs3-update 7008 afs3-rmtsys 7009 ups-onlinet 7010 lazy-ptop 7099 font-service 7100 fodms 7200 dlip 7201 winqedit 7395 pmdmgr 7426 oveadmgr 7427 ovladmgr 7428 opi-sock 7429 xmpv7 7430 pmd 7431 telops-lmd 7491 pafec-lm 7511 cbt 7777 accu-lmgr 7781 quest-vista 7980 irdmi2 7999 irdmi 8000 pro-ed 8032 npmp 8450 ddi-udp-1 8888 ddi-udp-2 8889 ddi-udp-3 8890 ddi-udp-4 8891 ddi-udp-5 8892 ddi-udp-6 8893 ddi-udp-7 8894 cslistener 9000 man 9535 sd 9876 distinct32 9998 distinct 9999 ndmp 10000 tsaf 12753 dsmcc-config 13818 dsmcc-session 13819 dsmcc-passthru 13820 dsmcc-download 13821 dsmcc-ccp 13822 isode-dua 17007 biimenu 18000 webphone 21845 netspeak-is 21846 netspeak-cs 21847 netspeak-acd 21848 netspeak-cps 21849 wnn6 22273 vocaltec-phone 22555 aws-brf 22800 brf-gw 22951 icl-twobase1 25000 icl-twobase2 25001 icl-twobase3 25002 icl-twobase4 25003 icl-twobase5 25004 icl-twobase6 25005 icl-twobase7 25006 icl-twobase8 25007 icl-twobase9 25008 icl-twobase10 25009 vocaltec-hos 25793 wnn6-ds 26208 dbbrowse 47557 alc 47806 ap 47806 bacnet 47808 "; my %tcp_ports; my $tcp_ports = "tcpmux 1 rje 5 echo 7 discard 9 null 9 sink 9 systat 11 daytime 13 netstat 15 qotd 17 quote 17 msp 18 chargen 19 source 19 ttytst 19 ftp-data 20 ftp 21 ssh 22 telnet 23 mail 25 smtp 25 nsw-fe 27 msg-icp 29 msg-auth 31 dsp 33 time 37 rap 38 rlp 39 graphics 41 name 42 nameserver 42 nicname 43 whois 43 mpm-flags 44 mpm 45 mpm-snd 46 ni-ftp 47 auditd 48 tacacs 49 re-mail-ck 50 la-maint 51 xns-time 52 dns 53 domain 53 xns-ch 54 isi-gl 55 xns-auth 56 xns-mail 58 ni-mail 61 acas 62 whois++ 63 covia 64 tacacs-ds 65 sql*net 66 bootp 67 bootps 67 bootpc 68 tftp 69 gopher 70 netrjs-1 71 netrjs-2 72 netrjs-3 73 netrjs-4 74 deos 76 vettcp 78 finger 79 http 80 www 80 www-http 80 hosts2-ns 81 xfer 82 ctf 84 mfcobol 86 kerberos 88 su-mit-tg 89 dnsix 90 mit-dov 91 npp 92 dcp 93 objcall 94 supdup 95 dixie 96 swift-rvf 97 tacnews 98 metagram 99 newacct 100 hostname 101 hostnames 101 iso-tsap 102 gppitnp 103 acr-nema 104 csnet-ns 105 cso 105 3com-tsmux 106 rtelnet 107 snagas 108 pop2 109 pop3 110 sunrpc 111 mcidas 112 auth 113 ident 113 audionews 114 sftp 115 ansanotify 116 uucp-path 117 sqlserv 118 nntp 119 cfdptkt 120 erpc 121 smakynet 122 ntp 123 ansatrader 124 locus-map 125 unitary 126 locus-con 127 gss-xlicen 128 pwdgen 129 cisco-fna 130 cisco-tna 131 cisco-sys 132 statsrv 133 ingres-net 134 epmap 135 profile 136 netbios-ns 137 netbios-dgm 138 netbios-ssn 139 emfis-data 140 emfis-cntl 141 bl-idm 142 imap 143 news 144 uaac 145 iso-tp0 146 iso-ip 147 jargon 148 aed-512 149 sql-net 150 hems 151 bftp 152 sgmp 153 netsc-prod 154 netsc-dev 155 sqlsrv 156 knet-cmp 157 pcmail-srv 158 nss-routing 159 sgmp-traps 160 snmp 161 snmptrap 162 cmip-man 163 cmip-agent 164 xns-courier 165 s-net 166 namp 167 rsvd 168 send 169 print-srv 170 multiplex 171 cl/1 172 xyplex-mux 173 mailq 174 vmnet 175 genrad-mux 176 xdmcp 177 nextstep 178 bgp 179 ris 180 unify 181 audit 182 ocbinder 183 ocserver 184 remote-kis 185 kis 186 aci 187 mumps 188 qft 189 gacp 190 prospero 191 osu-nms 192 srmp 193 irc 194 dn6-nlm-aud 195 dn6-smm-red 196 dlsold 197 dls-mon 198 smux 199 src 200 at-rtmp 201 at-nbp 202 at-3 203 at-echo 204 at-5 205 at-zis 206 at-7 207 at-8 208 qmtp 209 z39.50 210 914c/g 211 anet 212 ipx 213 vmpwscs 214 softpc 215 cailic 216 dbase 217 mpp 218 uarps 219 imap3 220 fln-spx 221 rsh-spx 222 cdc 223 direct 242 sur-meas 243 dayna 244 link 245 dsp3270 246 ibm-rap 256 set 257 yak-chat 258 esro-gen 259 openport 260 nsiiops 261 arcisdms 262 hdap 263 http-mgmt 280 personal-link 281 cableport-ax 282 entrusttime 309 pdap 344 pawserv 345 zserv 346 fatserv 347 csi-sgwp 348 matip-type-a 350 matip-type-b 351 dtag-ste-sb 352 clearcase 371 ulistproc 372 legent-1 373 legent-2 374 hassle 375 nip 376 tnetos 377 dsetos 378 is99c 379 is99s 380 hp-collector 381 hp-managed-node 382 hp-alarm-mgr 383 arns 384 ibm-app 385 asa 386 aurp 387 unidata-ldm 388 ldap 389 uis 390 synotics-relay 391 synotics-broker 392 dis 393 embl-ndt 394 netcp 395 netware-ip 396 mptn 397 kryptolan 398 iso-tsap-c2 399 work-sol 400 ups 401 genie 402 decap 403 nced 404 ncld 405 imsp 406 timbuktu 407 prm-sm 408 prm-nm 409 decladebug 410 rmt 411 synoptics-trap 412 smsp 413 infoseek 414 bnet 415 silverplatter 416 onmux 417 hyper-g 418 ariel1 419 smpte 420 ariel2 421 ariel3 422 opc-job-start 423 opc-job-track 424 icad-el 425 smartsdp 426 svrloc 427 ocs_cmu 428 ocs_amu 429 utmpsd 430 utmpcd 431 iasd 432 nnsp 433 mobileip-agent 434 mobilip-mn 435 dna-cml 436 comscm 437 dsfgw 438 dasp 439 sgcp 440 decvms-sysmgt 441 cvc_hostd 442 https 443 shttp 443 snpp 444 microsoft-ds 445 ddm-rdb 446 ddm-dfm 447 ddm-rfm 447 ddm-byte 448 as-servermap 449 tserver 450 sfs-smp-net 451 sfs-config 452 creativeserver 453 contentserver 454 creativepartnr 455 macon-tcp 456 scohelp 457 appleqtc 458 ampr-rcmd 459 skronk 460 datarampsrv 461 datasurfsrv 461 datarampsrvsec 462 datasurfsrvsec 462 alpes 463 kpasswd 464 smtps 465 ssmtp 465 digital-vrc 466 mylex-mapd 467 photuris 468 rcp 469 scx-proxy 470 mondex 471 ljk-login 472 hybrid-pop 473 tn-tl-w1 474 tcpnethaspsrv 475 tn-tl-fd1 476 ss7ns 477 spsc 478 iafserver 479 iafdbase 480 ph 481 bgs-nsi 482 ulpnet 483 integra-sme 484 powerburst 485 avian 486 saft 487 gss-http 488 nest-protocol 489 micom-pfs 490 go-login 491 ticf-1 492 ticf-2 493 pov-ray 494 intecourier 495 pim-rp-disc 496 dantz 497 siam 498 iso-ill 499 isakmp 500 stmf 501 asa-appl-proto 502 intrinsa 503 citadel 504 mailbox-lm 505 ohimsrv 506 crs 507 xvttp 508 snare 509 fcp 510 firstclass 510 mynet 511 mynet-as 511 exec 512 login 513 cmd 514 rcmd 514 shell 514 printer 515 spooler 515 videotex 516 otalk 517 talk 517 ntalk 518 unixtime 519 utime 519 efs 520 ripng 521 ulp 522 ibm-db2 523 ncp 524 timed 525 timeserver 525 newdate 526 tempo 526 stx 527 custix 528 irc-serv 529 courier 530 rpc 530 chat 531 conference 531 netnews 532 readnews 532 netwall 533 mm-admin 534 iiop 535 opalis-rdv 536 netmsp 537 gdomap 538 apertus-ldp 539 uucp 540 uucpd 540 uucp-rlogin 541 commerce 542 klogin 543 krcmd 544 kshell 544 appleqtcsrvr 545 dhcpv6-client 546 dhcpv6-server 547 afpovertcp 548 idfp 549 new-rwho 550 new-who 550 cybercash 551 deviceshare 552 pirp 553 rtsp 554 dsf 555 brfs 556 remotefs 556 rfs 556 rfs_server 556 openvms-sysipc 557 sdnskmp 558 teedtap 559 rmonitor 560 rmonitord 560 monitor 561 chcmd 562 chshell 562 nntps 563 snntp 563 9pfs 564 whoami 565 streettalk 566 banyan-rpc 567 ms-shuttle 568 ms-rome 569 demon 570 meterd 570 meter 571 udemon 571 sonar 572 banyan-vip 573 ftp-agent 574 vemmi 575 ipcd 576 vnas 577 ipdd 578 decbsrv 579 sntp-heartbeat 580 bdp 581 scc-security 582 philips-vc 583 keyserver 584 imap4-ssl 585 password-chg 586 submission 587 ipcserver 600 urm 606 nqs 607 sift-uft 608 npmp-trap 609 npmp-local 610 npmp-gui 611 hmmp-ind 612 hmmp-op 613 sshell 614 sslshell 614 sco-inetmgr 615 sco-sysmgr 616 sco-dtmgr 617 dei-icda 618 digital-evm 619 sco-websrvrmgr 620 escp 621 escp-ip 621 servstat 633 ginad 634 rlzdbase 635 ldaps 636 sldap 636 lanserver 637 doom 666 mdqs 666 disclose 667 mecomm 668 meregister 669 vacdsm-sws 670 vacdsm-app 671 vpps-qua 672 cimplex 673 acap 674 elcsd 704 errlog 704 agentx 705 entrust-kmsh 709 entrust-ash 710 netviewdm1 729 netviewdm2 730 netviewdm3 731 netgw 741 netrcs 742 flexlm 744 fujitsu-dev 747 ris-cm 748 kerberos-adm 749 rfile 750 pump 751 qrh 752 rrh 753 tell 754 nlogin 758 con 759 ns 760 rxe 761 quotad 762 cycleserv 763 omserv 764 webster 765 phone 767 phonebook 767 vid 769 cadlock 770 rtip 771 cycleserv2 772 submit 773 rpasswd 774 entomb 775 wpages 776 wpgs 780 concert 786 mdbs_daemon 800 device 801 iclcnet-locate 886 iclcnet_svinfo 887 accessbuilder 888 xact-backup 911 ftps-data 989 ftps 990 nas 991 telnets 992 imaps 993 ircs 994 pop3s 995 spop3 995 vsinet 996 maitrd 997 busboy 998 garcon 999 puprouter 999 ock 1000 blackjack 1025 iad1 1030 iad2 1031 iad3 1032 neod1 1047 neod2 1048 nim 1058 nimreg 1059 instl_boots 1067 instl_bootc 1068 socks 1080 ansoft-lm-1 1083 ansoft-lm-2 1084 nfsd-status 1110 lmsocialserver 1111 murray 1123 nfa 1155 mc-client 1180 lupa 1212 nerv 1222 hermes 1248 bmc_patroldb 1313 pdps 1314 vpjp 1345 alta-ana-lm 1346 bbn-mmc 1347 bbn-mmx 1348 sbook 1349 editbench 1350 equationbuilder 1351 lotusnote 1352 relief 1353 rightbrain 1354 edge 1355 intuitive 1355 intuitive-edge 1355 cuillamartin 1356 pegboard 1357 connlcli 1358 ftsrv 1359 mimer 1360 linx 1361 timeflies 1362 ndm-requester 1363 ndm-server 1364 adapt-sna 1365 netware-csp 1366 dcs 1367 screencast 1368 gv-us 1369 us-gv 1370 fc-cli 1371 fc-ser 1372 chromagrafx 1373 molly 1374 bytex 1375 ibm-pps 1376 cichlid 1377 elan 1378 dbreporter 1379 telesis-licman 1380 apple-licman 1381 gwha 1383 os-licman 1384 atex_elmd 1385 checksum 1386 cadsi-lm 1387 objective-dbc 1388 iclpv-dm 1389 iclpv-sc 1390 iclpv-sas 1391 iclpv-pm 1392 iclpv-nls 1393 iclpv-nlc 1394 iclpv-wsm 1395 dvl-activemail 1396 audio-activmail 1397 video-activmail 1398 cadkey-licman 1399 cadkey-tablet 1400 goldleaf-licman 1401 prm-sm-np 1402 prm-nm-np 1403 igi-lm 1404 ibm-res 1405 netlabs-lm 1406 dbsa-lm 1407 sophia-lm 1408 here-lm 1409 hiq 1410 af 1411 innosys 1412 innosys-acl 1413 ibm-mqseries 1414 dbstar 1415 novell-lu6.2 1416 timbuktu-srv1 1417 timbuktu-srv2 1418 timbuktu-srv3 1419 timbuktu-srv4 1420 gandalf-lm 1421 autodesk-lm 1422 essbase 1423 hybrid 1424 zion-lm 1425 sais 1426 mloadd 1427 informatik-lm 1428 nms 1429 tpdu 1430 rgtp 1431 blueberry-lm 1432 ms-sql-s 1433 ms-sql-m 1434 ibm-cics 1435 saism 1436 tabula 1437 eicon-server 1438 eicon-x25 1439 eicon-slp 1440 cadis-1 1441 cadis-2 1442 ies-lm 1443 marcam-lm 1444 proxima-lm 1445 ora-lm 1446 apri-lm 1447 oc-lm 1448 peport 1449 dwf 1450 infoman 1451 gtegsc-lm 1452 genie-lm 1453 interhdl_elmd 1454 esl-lm 1455 dca 1456 valisys-lm 1457 nrcabq-lm 1458 proshare1 1459 proshare2 1460 ibm_wrless_lan 1461 world-lm 1462 nucleus 1463 msl_lmd 1464 pipes 1465 oceansoft-lm 1466 aal-lm 1469 uaiact 1470 csdmbase 1471 csdm 1472 openmath 1473 telefinder 1474 taligent-lm 1475 clvm-cfg 1476 ms-sna-server 1477 ms-sna-base 1478 dberegister 1479 pacerforum 1480 airs 1481 miteksys-lm 1482 afs 1483 confluent 1484 lansource 1485 nms_topo_serv 1486 localinfosrvr 1487 docstor 1488 dmdocbroker 1489 insitu-conf 1490 anynetgateway 1491 stone-design-1 1492 netmap_lm 1493 ica 1494 cvc 1495 liberty-lm 1496 rfx-lm 1497 watcom-sql 1498 fhc 1499 vlsi-lm 1500 saiscm 1501 shiva 1502 shivadiscovery 1502 databeam 1503 imtc-mcs 1503 evb-elm 1504 funkproxy 1505 utcd 1506 symplex 1507 diagmond 1508 robcad-lm 1509 mvx-lm 1510 3l-l1 1511 wins 1512 fujitsu-dtc 1513 fujitsu-dtcns 1514 ifor-protocol 1515 vpad 1516 vpac 1517 vpvd 1518 vpvc 1519 atm-zip-office 1520 ncube-lm 1521 cichild 1523 cichild-lm 1523 ingres 1524 ingreslock 1524 orasrv 1525 prospero-np 1525 pdap-np 1526 tlisrv 1527 mciautoreg 1528 coauthor 1529 rap-service 1530 rap-listen 1531 miroconnect 1532 virtual-places 1533 micromuse-lm 1534 ampr-info 1535 ampr-inter 1536 sdsc-lm 1537 3ds-lm 1538 intellistor-lm 1539 rds 1540 rds2 1541 gridgen-elmd 1542 simba-cs 1543 aspeclmd 1544 vistium-share 1545 abbaccuray 1546 laplink 1547 axon-lm 1548 shivahose 1549 3m-image-lm 1550 hecmtl-db 1551 pciarray 1552 sna-cs 1553 caci-lm 1554 livelan 1555 ashwin 1556 arbortext-lm 1557 xingmpeg 1558 web2host 1559 asci-val 1560 facilityview 1561 pconnectmgr 1562 cadabra-lm 1563 pay-per-view 1564 windd 1565 winddlb 1565 corelvideo 1566 jlicelmd 1567 tsspmap 1568 ets 1569 orbixd 1570 rdb-dbs-disp 1571 chip-lm 1572 itscomm-ns 1573 mvel-lm 1574 oraclenames 1575 moldflow-lm 1576 hypercube-lm 1577 jacobus-lm 1578 ioc-sea-lm 1579 tn-tl-r1 1580 vmf-msg-port 1581 msims 1582 simbaexpress 1583 tn-tl-fd2 1584 intv 1585 ibm-abtact 1586 pra_elmd 1587 triquest-lm 1588 vqp 1589 gemini-lm 1590 ncpm-pm 1591 commonspace 1592 mainsoft-lm 1593 sixtrak 1594 radio 1595 radio-sm 1596 orbplus-iiop 1597 picknfs 1598 simbaservices 1599 issd 1600 aas 1601 dec-inspect 1602 pickodbc 1603 picodbc 1603 icabrowser 1604 slp 1605 slm-api 1606 stt 1607 smart-lm 1608 isysg-lm 1609 taurus-wh 1610 ill 1611 netbill-trans 1612 netbill-keyrep 1613 netbill-cred 1614 netbill-auth 1615 netbill-prod 1616 nimrod-agent 1617 skytelnet 1618 xs-openstorage 1619 faxportwinport 1620 softdataphone 1621 ontime 1622 jaleosnd 1623 udp-sr-port 1624 svs-omagent 1625 cncp 1636 cnap 1637 cnip 1638 cert-initiator 1639 cert-responder 1640 invision 1641 isis-am 1642 isis-ambc 1643 saiseh 1644 datametrics 1645 sa-msg-port 1646 rsap 1647 concurrent-lm 1648 inspect 1649 nkd 1650 shiva_confsrvr 1651 xnmp 1652 alphatech-lm 1653 stargatealerts 1654 dec-mbadmin 1655 dec-mbadmin-h 1656 fujitsu-mmpdc 1657 sixnetudr 1658 sg-lm 1659 skip-mc-gikreq 1660 netview-aix-1 1661 netview-aix-2 1662 netview-aix-3 1663 netview-aix-4 1664 netview-aix-5 1665 netview-aix-6 1666 netview-aix-7 1667 netview-aix-8 1668 netview-aix-9 1669 netview-aix-10 1670 netview-aix-11 1671 netview-aix-12 1672 proshare-mc-1 1673 proshare-mc-2 1674 pdp 1675 netcomm1 1676 groupwise 1677 prolink 1678 darcorp-lm 1679 microcom-sbp 1680 sd-elmd 1681 lanyon-lantern 1682 ncpm-hip 1683 snaresecure 1684 n2nremote 1685 cvmon 1686 nsjtp-ctrl 1687 nsjtp-data 1688 firefox 1689 ng-umds 1690 empire-empuma 1691 sstsys-lm 1692 rrirtr 1693 rrimwm 1694 rrilwm 1695 rrifmm 1696 rrisat 1697 rsvp-encap-1 1698 rsvp-encapsulation-1 1698 rsvp-encap-2 1699 rsvp-encapsulation-2 1699 mps-raft 1700 l2f 1701 deskshare 1702 hb-engine 1703 bcs-broker 1704 slingshot 1705 jetform 1706 vdmplay 1707 gat-lmd 1708 centra 1709 impera 1710 pptconference 1711 registrar 1712 conferencetalk 1713 sesi-lm 1714 houdini-lm 1715 xmsg 1716 fj-hdnet 1717 h323gatedisc 1718 h323gatestat 1719 h323hostcall 1720 caicci 1721 hks-lm 1722 pptp 1723 csbphonemaster 1724 iden-ralp 1725 iberiagames 1726 winddx 1727 telindus 1728 citynl 1729 roketz 1730 msiccp 1731 proxim 1732 sipat 1733 cambertx-lm 1734 privatechat 1735 street-stream 1736 ultimad 1737 gamegen1 1738 webaccess 1739 encore 1740 cisco-net-mgmt 1741 3com-nsd 1742 cinegrfx-lm 1743 ncpm-ft 1744 remote-winsock 1745 ftrapid-1 1746 ftrapid-2 1747 oracle-em1 1748 aspen-services 1749 sslp 1750 swiftnet 1751 lofr-lm 1752 translogic-lm 1753 oracle-em2 1754 ms-streaming 1755 capfast-lmd 1756 cnhrp 1757 tftp-mcast 1758 spss-lm 1759 www-ldap-gw 1760 cft-0 1761 cft-1 1762 cft-2 1763 cft-3 1764 cft-4 1765 cft-5 1766 cft-6 1767 cft-7 1768 bmc-net-adm 1769 bmc-net-svc 1770 vaultbase 1771 essweb-gw 1772 kmscontrol 1773 global-dtserv 1774 femis 1776 powerguardian 1777 prodigy-internet 1778 pharmasoft 1779 dpkeyserv 1780 answersoft-lm 1781 hp-hcip 1782 fjris 1783 finle-lm 1784 windlm 1785 funk-logger 1786 funk-license 1787 psmond 1788 hello 1789 nmsp 1790 ea1 1791 ibm-dt-2 1792 rsc-robot 1793 cera-bcm 1794 dpi-proxy 1795 vocaltec-admin 1796 uma 1797 etp 1798 netrisk 1799 ansys-lm 1800 msmq 1801 concomp1 1802 hp-hcip-gwy 1803 enl 1804 enl-name 1805 musiconline 1806 fhsp 1807 oracle-vp2 1808 oracle-vp1 1809 jerand-lm 1810 scientia-sdb 1811 radius 1812 radius-acct 1813 tdp-suite 1814 mmpft 1815 etftp 1818 plato-lm 1819 mcagent 1820 donnyworld 1821 es-elmd 1822 unisys-lm 1823 metrics-pas 1824 fjicl-tep-a 1901 fjicl-tep-b 1902 linkname 1903 fjicl-tep-c 1904 sugp 1905 tpmd 1906 tportmapperreq 1906 intrastar 1907 dawn 1908 global-wlink 1909 mtp 1911 armadp 1913 elm-momentum 1914 facelink 1915 persoft 1916 noagent 1917 can-nds 1918 can-dch 1919 can-ferret 1920 close-combat 1944 dialogic-elmd 1945 tekpls 1946 eye2eye 1948 ismaeasdaqlive 1949 ismaeasdaqtest 1950 bcs-lmserver 1951 dlsrap 1973 foliocorp 1985 licensedaemon 1986 tr-rsrb-p1 1987 tr-rsrb-p2 1988 mshnet 1989 tr-rsrb-p3 1989 stun-p1 1990 stun-p2 1991 ipsendmsg 1992 stun-p3 1992 snmp-tcp-port 1993 stun-port 1994 perf-port 1995 tr-rsrb-port 1996 gdp-port 1997 x25-svc-port 1998 tcp-id-port 1999 callbook 2000 dc 2001 globe 2002 mailbox 2004 berknet 2005 invokator 2006 dectalk 2007 conf 2008 search 2010 raid-cc 2011 ttyinfo 2012 raid-am 2013 troff 2014 cypress 2015 bootserver 2016 cypress-stat 2017 terminaldb 2018 whosockami 2019 xinupageserver 2020 servexec 2021 down 2022 xinuexpansion3 2023 xinuexpansion4 2024 ellpack 2025 scrabble 2026 shadowserver 2027 submitserver 2028 device2 2030 blackboard 2032 glogger 2033 scoremgr 2034 imsldoc 2035 objectmanager 2038 lam 2040 interbase 2041 isis 2042 isis-bcast 2043 rimsl 2044 cdfunc 2045 sdfunc 2046 dls 2047 dls-monitor 2048 nfs 2049 shilp 2049 dlsrpn 2065 dlswpn 2067 zephyr-srv 2102 zephyr-clt 2103 zephyr-hm 2104 minipay 2105 mc-gt-srv 2180 ats 2201 imtc-map 2202 kali 2213 unreg-ab1 2221 unreg-ab2 2222 inreg-ab3 2223 ivs-video 2232 infocrypt 2233 directplay 2234 sercomm-wlink 2235 nani 2236 optech-port1-lm 2237 aviva-sna 2238 imagequery 2239 ivsd 2241 xmquery 2279 lnvpoller 2280 lnvconsole 2281 lnvalarm 2282 lnvstatus 2283 lnvmaps 2284 lnvmailmon 2285 nas-metering 2286 dna 2287 netml 2288 pehelp 2307 sdhelp 2308 cvspserver 2401 rtsserv 2500 rtsclient 2501 hp-3000-telnet 2564 netrek 2592 tqdata 2700 www-dev 2784 aic-np 2785 aic-oncrpc 2786 piccolo 2787 fryeserv 2788 media-agent 2789 mao 2908 funk-dialout 2909 tdaccess 2910 blockade 2911 epicon 2912 hbci 3000 redwood-broker 3001 exlm-agent 3002 gw 3010 trusted-web 3011 hlserver 3047 pctrader 3048 nsws 3049 vmodem 3141 rdc-wh-eos 3142 seaview 3143 tarantella 3144 csi-lfap 3145 mc-brk-srv 3180 ccmail 3264 altav-tunnel 3265 ns-cfg-server 3266 ibm-dial-out 3267 msft-gc 3268 msft-gc-ssl 3269 verismart 3270 csoft-prev 3271 user-manager 3272 sxmp 3273 ordinox-server 3274 samd 3275 maxim-asics 3276 dec-notes 3333 bmap 3421 mira 3454 prsvp 3455 vat 3456 vat-control 3457 d3winosfi 3458 integral 3459 mapper-nodemgr 3984 mapper-mapethd 3985 mapper-ws_ethd 3986 terabase 4000 netcheque 4008 chimera-hwm 4009 samsung-unidex 4010 altserviceboot 4011 pda-gate 4012 acl-manager 4013 nuts_dem 4132 nuts_bootp 4133 nifty-hmi 4134 oirtgsvc 4141 oidocsvc 4142 oidsr 4143 rwhois 4321 unicall 4343 vinainstall 4344 krb524 4444 nv-video 4444 upnotifyp 4445 n1-fwp 4446 n1-rmgmt 4447 asc-slmd 4448 arcryptoip 4449 camp 4450 ctisystemmsg 4451 ctiprogramload 4452 nssalertmgr 4453 nssagentmgr 4454 sae-urn 4500 urn-x-cdchoice 4501 hylafax 4559 rfa 4672 commplex-main 5000 commplex-link 5001 rfe 5002 claris-fmpro 5003 avt-profile-1 5004 avt-profile-2 5005 telelpathstart 5010 telepathstart 5010 telelpathattack 5011 telepathattack 5011 zenginkyo-1 5020 zenginkyo-2 5021 mmcc 5050 rmonitor_secure 5145 atmp 5150 america-online 5190 aol 5190 americaonline1 5191 aol-1 5191 americaonline2 5192 aol-2 5192 americaonline3 5193 aol-3 5193 padl2sim 5236 hacl-hb 5300 hacl-gs 5301 hacl-cfg 5302 hacl-probe 5303 hacl-local 5304 hacl-test 5305 sun-mc-grp 5306 sco-aip 5307 cfengine 5308 jprinter 5309 outlaws 5310 tmlogin 5311 excerpt 5400 excerpts 5401 mftp 5402 hpoms-ci-lstn 5403 hpoms-dps-lstn 5404 netsupport 5405 systemics-sox 5406 foresyte-clear 5407 foresyte-sec 5408 salient-dtasrv 5409 salient-usrmgr 5410 actnet 5411 continuus 5412 wwiotalk 5413 statusd 5414 ns-server 5415 sns-gateway 5416 sns-agent 5417 mcntp 5418 dj-ice 5419 cylink-c 5420 personal-agent 5555 esmmanager 5600 esmagent 5601 a1-msc 5602 a1-bs 5603 a3-sdunode 5604 a4-sdunode 5605 pcanywheredata 5631 pcanywherestat 5632 rrac 5678 dccm 5679 proshareaudio 5713 prosharevideo 5714 prosharedata 5715 prosharerequest 5716 prosharenotify 5717 openmail 5729 fcopy-server 5745 openmailg 5755 x500ms 5757 openmailns 5766 s-openmail 5767 x11 6000 softcm 6110 spc 6111 dtspcd 6112 backup-express 6123 meta-corp 6141 aspentec-lm 6142 watershed-lm 6143 statsci1-lm 6144 statsci2-lm 6145 lonewolf-lm 6146 montage-lm 6147 tal-pod 6149 crip 6253 clariion-evr01 6389 skip-cert-recv 6455 skip-cert-send 6456 lvision-lm 6471 xdsxdm 6558 vocaltec-gold 6670 vision_server 6672 vision_elmd 6673 ambit-lm 6831 acmsoda 6969 afs3-fileserver 7000 afs3-callback 7001 afs3-prserver 7002 afs3-vlserver 7003 afs3-kaserver 7004 afs3-volser 7005 afs3-errors 7006 afs3-bos 7007 afs3-update 7008 afs3-rmtsys 7009 ups-onlinet 7010 lazy-ptop 7099 font-service 7100 virprot-lm 7121 clutild 7174 fodms 7200 dlip 7201 winqedit 7395 pmdmgr 7426 oveadmgr 7427 ovladmgr 7428 opi-sock 7429 xmpv7 7430 pmd 7431 telops-lmd 7491 pafec-lm 7511 cbt 7777 accu-lmgr 7781 quest-vista 7980 irdmi2 7999 irdmi 8000 pro-ed 8032 npmp 8450 ddi-tcp-1 8888 ddi-tcp-2 8889 ddi-tcp-3 8890 ddi-tcp-4 8891 ddi-tcp-5 8892 ddi-tcp-6 8893 ddi-tcp-7 8894 cslistener 9000 man 9535 sd 9876 distinct32 9998 distinct 9999 ndmp 10000 tsaf 12753 dsmcc-config 13818 dsmcc-session 13819 dsmcc-passthru 13820 dsmcc-download 13821 dsmcc-ccp 13822 isode-dua 17007 biimenu 18000 webphone 21845 netspeak-is 21846 netspeak-cs 21847 netspeak-acd 21848 netspeak-cps 21849 wnn6 22273 vocaltec-wconf 22555 aws-brf 22800 brf-gw 22951 icl-twobase1 25000 icl-twobase2 25001 icl-twobase3 25002 icl-twobase4 25003 icl-twobase5 25004 icl-twobase6 25005 icl-twobase7 25006 icl-twobase8 25007 icl-twobase9 25008 icl-twobase10 25009 vocaltec-hos 25793 quake 26000 wnn6-ds 26208 dbbrowse 47557 alc 47806 ap 47806 bacnet 47808 "; #& _ianaport($servname,\%ports,\$ports) : {$portnum | undef} sub _ianaport ($\%\$) { my ($svc,$defports,$rstr) = @_; unless (%$defports) { %$defports = split(' ', $$rstr); # now have to force a real free() and not just SvPOK_off() $$rstr = $defports; # convert SVt_PV to SVt_RV to free the string undef $$rstr; } $defports->{$svc}; } #& _setport($self,$key,$newval) : {'' | "carp string"} sub _setport { my($self,$key,$newval) = @_; return "Invalid arguments to " . __PACKAGE__ . "::_setport(@_), called" if @_ != 3 || !exists($ {*$self}{Keys}{$key}); my $whoami = $self->_trace(\@_,1); my($skey,$hkey,$pkey,$svc,$port,$proto,$type,$host,$reval); my($pname,$defport,@serv); ($skey = $key) =~ s/port$/service/; # a key known to be for a service ($pkey = $key) =~ s/service$/port/; # and one for the port ($hkey = $pkey) =~ s/port$/host/; # another for calling _sethost if (!defined $newval) { # deleting a service or port delete $ {*$self}{Parms}{$skey}; delete $ {*$self}{Parms}{$pkey} unless $self->isconnected; my @delkeys; if ($pkey eq 'thisport') { @delkeys = qw(srcaddrlist srcaddr); } elsif ($pkey eq 'destport') { @delkeys = qw(dstaddrlist dstaddr); } pop(@delkeys) if @delkeys and $self->isconnected; $self->delparams(\@delkeys) if @delkeys; return ''; # ok to delete } # here, we're trying to set a port or service $pname = $self->getparam('IPproto'); $proto = $self->getparam('proto'); # try to find our protocol if (!defined($pname) && !$proto && defined($type = $self->getparam('type'))) { # try to infer protocol from SO_TYPE if ($type == SOCK_STREAM) { $proto = IPPROTO_TCP(); } elsif ($type == SOCK_DGRAM) { $proto = IPPROTO_UDP(); } } if (defined $proto and not defined $pname) { $pname = getprotobynumber($proto); unless (defined $pname) { if ($proto == IPPROTO_UDP()) { $pname = 'udp'; } elsif ($proto == IPPROTO_TCP()) { $pname = 'tcp'; } elsif ($proto == IPPROTO_ICMP()) { $pname = 'icmp'; } } } $reval = $newval; # make resetting $_[2] simple $svc = $ {*$self}{Parms}{$skey}; # preserve earlier values $port = $ {*$self}{Parms}{$pkey}; $port = undef if defined($port) and $port =~ /\D/; # but stored ports must be numeric ($newval,$defport) = ($1,$2+0) if $newval =~ /^(.+)\((\d+)\)$/; if ($skey eq $key || $newval =~ /\D/) { # trying to set a service @serv = getservbyname($newval,$pname); # try to find the port info } if ($newval !~ /\D/ && !@serv) { # setting a port number (even if service) $port = $newval+0; # just in case no servent is found @serv = getservbyport(htons($port),$pname) if $pname; } if (@serv) { # if we resolved name/number input $svc = $serv[0]; # save the canonical service name (and number?) $port = 0+$serv[2] unless $key eq $pkey and $newval !~ /\D/; } elsif (!$defport && $newval =~ /\D/) { # unknown service if ($pname eq 'udp') { $defport = _ianaport("\L$newval",%udp_ports,$udp_ports); } elsif ($pname eq 'tcp') { $defport = _ianaport("\L$newval",%tcp_ports,$tcp_ports); } return "Unknown service $newval, found" unless $defport; $port = $defport+0; $svc = $newval; } elsif ($defport && $newval) { $svc = $newval; $port = $defport; } elsif ($key eq $skey or $newval =~ /\D/) { # setting unknown service return "Unknown service $newval, found"; } $reval = (($key eq $skey) ? $svc : $port); # in case we get that far $ {*$self}{Parms}{$skey} = $svc if $svc; # in case no port change $_[2] = $reval; print STDERR " - " . __PACKAGE__ . "::_setport $self $skey $svc\n" if $svc and $self->debug; print STDERR " - " . __PACKAGE__ . "::_setport $self $pkey $port\n" if defined $port and $self->debug; # Have to keep going here for implicit bind() from init(). # return '' if defined($ {*$self}{Parms}{$pkey}) and # $ {*$self}{Parms}{$pkey} == $port; # not an update if same number $ {*$self}{Parms}{$pkey} = $port; # in case was service key # check for whether we can ask _sethost to set {dst,src}addrlist now return '' unless defined($host = $ {*$self}{Parms}{$hkey}) or $hkey eq 'thishost'; $host = '0' if !defined $host; # 'thishost' value was null $self->setparams({$hkey => $host},0,1); # try it ''; # return goodness from here } #& _setproto($this, $key, $newval) : {'' | "carp string"} sub _setproto { my($self,$key,$newval) = @_; if (!defined $newval) { # delparams call? # make both go away at once delete @{ $ {*$self}{Parms} }{'IPproto','proto'}; return ''; } my($pname,$proto); if ($key ne 'proto' or $newval =~ /\D/) { # have to try for name->number my @pval = getprotobyname($newval); if (@pval) { $pname = $pval[0]; $proto = $pval[2]; } } if (!defined($proto) and $newval !~ /\D/) { # numeric proto, find name $proto = $newval+0; $pname = getprotobynumber($proto); } return "Unknown protocol ($newval), seen" unless defined $proto; unless (defined $pname) { if ($proto == IPPROTO_UDP) { $pname = 'udp'; } elsif ($proto == IPPROTO_TCP) { $pname = 'tcp'; } elsif ($proto == IPPROTO_ICMP) { $pname = 'icmp'; } } $ {*$self}{Parms}{IPproto} = $pname; # update our values $ {*$self}{Parms}{proto} = $proto; # make sure the right value gets set $_[2] = (($key eq 'proto') ? $proto : $pname); ''; # return goodness } #& _addrinfo($this, $sockaddr) : (name, addr, service, portnum) sub _addrinfo { my($this,$sockaddr) = @_; my($fam,$port,$serv,$name,$addr,@hinfo); ($fam,$port,$addr) = unpack_sockaddr_in($sockaddr); @hinfo = gethostbyaddr($addr,$fam); $addr = inet_ntoa($addr); $name = (!@hinfo) ? $addr : $hinfo[0]; $serv = getservbyport(htons($port), (ref $this) && $this->getparam('IPproto')) || $port; ($name, $addr, $serv, $port); } #& getsockinfo($this) : $remote_addr || ($local_addr, $rem_addr) | () #+attrs locked method sub getsockinfo { my($self) = @_; my($rem,$lcl,$port,$serv,$name,$addr); ($lcl,$rem) = $self->SUPER::getsockinfo; if (defined $rem and length($rem)) { ($name, $addr, $serv, $port) = $self->_addrinfo($rem); $self->setparams({remhost => $name, remaddr => $addr, remservice => $serv, remport => $port}); } if (defined $lcl and length($lcl)) { ($name, $addr, $serv, $port) = $self->_addrinfo($lcl); $self->setparams({lclhost => $name, lcladdr => $addr, lclservice => $serv, lclport => $port}); } wantarray ? ((defined $lcl || defined $rem) ? ($lcl,$rem) : ()) : $rem; } #& format_addr($this, $sockaddr, [numeric_only]) : $string sub format_addr { my($this,$sockaddr,$numeric) = @_; my($name,$addr,$serv,$port) = $this->_addrinfo($sockaddr); if ($numeric) { "${addr}:${port}"; } else { "${name}:${serv}"; } } 1; # autoloaded methods go after the END token (& pod) below __END__ =head1 NAME Net::Inet - Internet socket interface module =head1 SYNOPSIS use Net::Gen; # optional use Net::Inet; =head1 DESCRIPTION The C module provides basic services for handling socket-based communications for the Internet protocol family. It inherits from L|Net::Gen>, and is a base for L|Net::TCP> and L|Net::UDP>. =head2 Public Methods =over 4 =item new Usage: $obj = new Net::Inet; $obj = new Net::Inet $desthost, $destservice; $obj = new Net::Inet \%parameters; $obj = new Net::Inet $desthost, $destservice, \%parameters; $obj = 'Net::Inet'->new(); $obj = 'Net::Inet'->new($desthost, $destservice); $obj = 'Net::Inet'->new(\%parameters); $obj = 'Net::Inet'->new($desthost, $destservice, \%parameters); Returns a newly-initialised object of the given class. If called for a derived class, no validation of the supplied parameters will be performed. (This is so that the derived class can set up the parameter validation it needs in the object before allowing the validation.) Otherwise, it will cause the parameters to be validated by calling its C method. In particular, this means that if both a host and a service are given, then an object will only be returned if a connect() call was successful, or if the object is non-blocking and a connect() call is in progress. The examples above show the indirect object syntax which many prefer, as well as the guaranteed-to-be-safe static method call. There are occasional problems with the indirect object syntax, which tend to be rather obscure when encountered. See http://www.xray.mpe.mpg.de/mailing-lists/perl-porters/1998-01/msg01674.html for details. =item init Usage: return undef unless $self->init; return undef unless $self->init(\%parameters); return undef unless $self->init($desthost, $destservice); return undef unless $self->init($desthost, $destservice, \%parameters); Verifies that all previous parameter assignments are valid (via C). Returns the incoming object on success, and C on failure. Usually called only via a derived class's C method or its own C call. =item bind Usage: $ok = $obj->bind; $ok = $obj->bind($lclhost, $lclservice); $ok = $obj->bind($lclhost, $lclservice, \%parameters); Sets up the C object parameter with the specified $lclhost and $lclservice arguments if supplied (via the C and C object parameters), and then returns the value from the inherited C method. Changing of parameters is also allowed, mainly for setting debug status or timeouts. Example: $ok = $obj->bind(0, 'echo(7)'); # attach to the local TCP echo port =item unbind Usage: $obj->unbind; Deletes the C and C object parameters, and then (assuming that succeeds, which it should) returns the value from the inherited C method. =item connect Usage: $ok = $obj->connect; $ok = $obj->connect($host, $service); $ok = $obj->connect($host, $service, \%parameters); Attempts to establish a connection for the object. If the $host or $service arguments are specified, they will be used to set the C and C/C object parameters, with side-effects of setting up the C object parameter. Then, the result of a call to the inherited C method will be returned. Changing of parameters is also allowed, mainly for setting debug status or timeouts. =item format_addr Usage: $string = $obj->format_addr($sockaddr); $string = $obj->format_addr($sockaddr, $numeric_only); $string = format_addr Module $sockaddr; $string = format_addr Module $sockaddr, $numeric_only; Returns a formatted representation of the address. This is a method so that it can be overridden by derived classes. It is used to implement ``pretty-printing'' methods for source and destination addresses. If the $numeric_only argument is true, the address and port number will be used even if they can be resolved to names. Otherwise, the resolved hostname and service name will be used if possible. =item format_local_addr Usage: $string = $obj->format_local_addr; $string = $obj->format_local_addr($numeric_only); Returns a formatted representation of the local socket address associated with the object. A sugar-coated way of calling the C method for the C object parameter. =item format_remote_addr Usage: $string = $obj->format_remote_addr; Returns a formatted representation of the remote socket address associated with the object. A sugar-coated way of calling the C method for the C object parameter. =item getsockinfo An augmented form of L|Net::Gen/getsockinfo>. Aside from updating more object parameters, it behaves the same as that in the base class. The additional object parameters which get set are C, C, C, C, C, C, C, and C. (They are described in L<"Known Object Parameters"> below.) =back There are also various I methods for the object parameters. See L (where it talks about C) for calling details. See L<"Known Object Parameters"> below for those defined by this class. =head2 Protected Methods [See the note in L about my definition of protected methods in Perl.] None. =head2 Known Socket Options These are the socket options known to the C module itself: =over 4 =item Z<> C C C C C C C C C C C C C =back =head2 Known Object Parameters These are the object parameters registered by the C module itself: =over 4 =item IPproto The name of the Internet protocol in use on the socket associated with the object. Set as a side-effect of setting the C object parameter, and vice versa. =item proto Used the same way as with L|Net::Gen/proto>, but has a handler attached to keep it in sync with C. =item thishost The source host name or address to use for the C method. When used in conjunction with the C or C object parameter, causes the C object parameter to be set, which is how it affects the bind() action. This parameter is validated, and must be either a valid internet address or a hostname for which an address can be found. If a hostname is given, and multiple addresses are found for it, then each address will be entered into the C array reference. =item desthost The destination host name or address to use for the C method. When used in conjunction with the C or C object parameter, causes the C object parameter to be set, which is how it affects the connect() action. This parameter is validated, and must be either a valid internet address or a hostname for which an address can be found. If a hostname is given, and multiple addresses are found for it, then each address will be entered into the C array reference, in order. This allows the C method to attempt a connection to each address, as per RFC 1123. =item thisservice The source service name (or number) to use for the C method. An attempt will be made to translate the supplied service name with getservbyname(). If that succeeds, or if it fails but the supplied value was strictly numeric, the port number will be set in the C object parameter. If the supplied value is not numeric and can't be translated, the attempt to set the value will fail. Otherwise, this causes the C object parameter to be updated, in preparation for an invocation of the C method (possibly implicitly from the C method). =item thisport The source service number (or name) to use for the C method. An attempt will be made to translate the supplied service name with getservbyname() if it is not strictly numeric. If that succeeds, the given name will be set in the C parameter, and the resolved port number will be set in the C object parameter. If the supplied value is strictly numeric, and a call to getservbyport can resolve a name for the service, the C parameter will be updated appropriately. If the supplied value is not numeric and can't be translated, the attempt to set the value will fail. Otherwise, this causes the C object parameter to be updated, in preparation for an invocation of the C method (possibly implicitly from the C method). =item destservice The destination service name (or number) to use for the C method. An attempt will be made to translate the supplied service name with getservbyname(). If that succeeds, or if it fails but the supplied value was strictly numeric, the port number will be set in the C object parameter. If the supplied value is not numeric and can't be translated, the attempt to set the value will fail. Otherwise, if the C parameter has a defined value, this causes the C object parameter to be updated, in preparation for an invocation of the C method. =item destport The destination service number (or name) to use for the C method. An attempt will be made to translate the supplied service name with getservbyname() if it is not strictly numeric. If that succeeds, the given name will be set in the C parameter, and the resolved port number will be set in the C parameter. If the supplied value is strictly numeric, and a call to getservbyport can resolve a name for the service, the C parameter will be updated appropriately. If the supplied value is not numeric and can't be translated, the attempt to set the value will fail. Otherwise, if the C parameter has a defined value, this causes the C object parameter to be updated, in preparation for an invocation of the C method. =item lcladdr The local IP address stashed by the C method after a successful bind() or connect() call. =item lclhost The local hostname stashed by the C method after a successful bind() or connect(), as resolved from the C object parameter. =item lclport The local port number stashed by the C method after a successful bind() or connect() call. =item lclservice The local service name stashed by the C method after a successful bind() or connect(), as resolved from the C object parameter. =item remaddr The remote IP address stashed by the C method after a successful connect() call. =item remhost The remote hostname stashed by the C method after a successful connect() call, as resolved from the C object parameter. =item remport The remote port number stashed by the C method after a successful connect() call. =item remservice The remote service name stashed by the C method after a successful connect() call, as resolved from the C object parameter. =back =head2 Non-Method Subroutines =over 4 =item inet_aton Usage: $in_addr = inet_aton('192.0.2.1'); Returns the packed C address in network order, if it is validly formed, or C on error. This used to be a separate implementation in this package, but is now inherited from the C module. =item inet_addr A synonym for inet_aton() (for old fogeys like me who forget about the new name). (Yes, I know it's different in C, but in Perl there's no need to propagate the old inet_addr() braindamage of being unable to handle "255.255.255.255", so I didn't.) =item inet_ntoa Usage: $addr_string = inet_ntoa($in_addr); Returns the ASCII representation of the C address provided (if possible), or C on error. This used to be a separate implementation in this package, but is now inherited from the C module. =item htonl =item htons =item ntohl =item ntohs About as those who are used to them might expect, I think. However, these versions will return lists in list context, and will complain if given a multi-element list in scalar context. [For those who don't know what these are, and who don't have documentation on them in their existing system documentation, these functions convert data between 'host' and 'network' byte ordering, for 'short' or 'long' network data. (This should explain the 'h', 'n', 's', and 'l' letters in the names.) Long network data means 32-bit quantities, such as IP addresses, and short network data means 16-bit quantities, such as IP port numbers. You'd only need to use these functions if you're not using the methods from this package to build your packed 'sockaddr' structures or to unpack their data after a connect() or accept().] =item pack_sockaddr_in Usage: $connect_address = pack_sockaddr_in($family, $port, $in_addr); $connect_address = pack_sockaddr_in($port, $in_addr); Returns the packed C corresponding to the provided $family, $port, and $in_addr arguments. The $family and $port arguments must be numbers, and the $in_addr argument must be a packed C such as the trailing elements from perl's gethostent() return list. This differs from the implementation in the C module in that the C<$family> argument is available (though optional). The C<$family> argument defaults to C. =item unpack_sockaddr_in Usage: ($family, $port, $in_addr) = unpack_sockaddr_in($connected_address); Returns the address family, port, and packed C from the supplied packed C. This is the inverse of pack_sockaddr_in(). This differs from the implementation in the C module in that the C<$family> value from the socket address is returned (and might not be C). =item INADDR_UNSPEC_GROUP =item INADDR_ALLHOSTS_GROUP =item INADDR_ALLRTRS_GROUP =item INADDR_MAX_LOCAL_GROUP Constant routines returning the S, S, S, or the maximum possible local IP multicast group address, respectively. These routines return results in the form of a packed C much like the C result described in L. =item IN_CLASSA =item IN_CLASSB =item IN_CLASSC =item IN_CLASSD =item IN_MULTICAST =item IN_EXPERIMENTAL =item IN_BADCLASS Usage: $boolean = IN_EXPERIMENTAL(INADDR_ALLHOSTS_GROUP); $boolean = IN_CLASSA(0x7f000001); These routines return the I information for the supplied IP address. Of these, only IN_BADCLASS() and IN_MULTICAST() are really useful in today's Internet, since the advent of CIDR (classless Internet domain routing). In particular, IN_EXPERIMENTAL() is at the mercy of your vendor's definition. The first example above will be true only on older systems, which almost certainly don't support IP multicast anyway. The argument to any of these functions can be either a packed C such as that returned by inet_ntoa() or unpack_sockaddr_in(), or an integer (or integer expression) giving an IP address in I byte order. =item IPOPT_CLASS =item IPOPT_COPIED =item IPOPT_NUMBER Usage: $optnum = IPOPT_NUMBER($option); These routines extract information from IP option numbers, as per the information on IP options in RFC 791. =item ... Other constants which relate to parts of IP or ICMP headers or vendor-defined socket options, as listed in L<"Exports"> below. =back =head2 Exports =over 4 =item default C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C =item exportable C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C =item tags The following :tags are in C<%EXPORT_TAGS>, with the associated exportable values as listed: =over 6 =item :sockopts C C C C C C C C C C C C C =item :routines C C C C C C C C C C C C C C C C =item :icmpvalues C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C =item :ipoptions C C C C C C C C C C C C C C C C C C C C C C C C C C C C C =item :iptosvalues C C C C C C C C C C C =item :protocolvalues C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C C =item :ipmulticast C C C C C C C C =item :deprecated C C C C C C C C C C C C C C C C C C C C C C C C C C C =item :ALL All of the above exportable items. =back Z<> =back =head1 NOTES Anywhere a I or I argument is used above, the allowed syntax is either a service name, a port number, or a service name with a caller-supplied default port number. Examples are C<'echo'>, C<7>, and C<'echo(7)'>, respectively. For a I argument, a bare port number must be translatable into a service name with getservbyport() or an error will result. A service name must be translatable into a port with getservbyname() or an error will result. However, a service name with a default port number will succeed (by using the supplied default) even if the translation with getservbyname() fails. For example: $obj->setparam('destservice', 'http(80)'); This always succeeds, although if your F file (or equivalent for non-UNIX systems) maps "http" to something other than port 80, you'll get that other port. For a contrasting example: $obj->setparam('destservice', 80); This will fail, despite the numeric value, if your F file (or equivalent) is behind the times and has no mapping to a service name for port 80. =head1 THREADING STATUS This module has been tested with threaded perls, and should be as thread-safe as perl itself. (As of 5.005_03 and 5.005_57, that's not all that safe just yet.) It also works with interpreter-based threads ('ithreads') in more recent perl releases. =head1 SEE ALSO L, L, L =head1 AUTHOR Spider Boardman Espidb@cpan.orgE =cut #other sections should be added, sigh. #any real autoloaded methods go after this line #& setdebug($this, [bool, [norecurse]]) : oldvalue #+attrs locked sub setdebug { my $this = shift; $this->_debug($_[0]) . ((@_ > 1 && $_[1]) ? '' : $this->SUPER::setdebug(@_)); } #& bind($self, [\]@([host],[port])) : boolean #+attrs locked method sub bind { my($self,@args) = @_; return undef if @args and not $self->_hostport('this',@args); $self->SUPER::bind; } #& unbind($self) : boolean #+attrs locked method sub unbind { my($self,@args) = @_; if (@args) { $whoami = $_[0]->_trace(\@_,0); carp "Excess args to ${whoami} ignored"; } $self->delparams([qw(thishost thisport)]) || return undef; $self->SUPER::unbind; }