Index: head/net/Makefile =================================================================== --- head/net/Makefile (revision 415800) +++ head/net/Makefile (revision 415801) @@ -1,1408 +1,1409 @@ # $FreeBSD$ # COMMENT = Networking tools SUBDIR += 3proxy SUBDIR += 44bsd-rdist SUBDIR += 6tunnel SUBDIR += GeoIP SUBDIR += R-cran-twitteR SUBDIR += Sockets SUBDIR += abills SUBDIR += activemq SUBDIR += adasockets SUBDIR += afpfs-ng SUBDIR += aget SUBDIR += anet SUBDIR += aoe SUBDIR += apinger SUBDIR += appkonference SUBDIR += aprsc SUBDIR += arp-scan SUBDIR += arp-sk SUBDIR += arpdig SUBDIR += arping SUBDIR += arprelease SUBDIR += asio SUBDIR += aslookup SUBDIR += asterisk SUBDIR += asterisk-chan_sccp SUBDIR += asterisk-g72x SUBDIR += asterisk11 SUBDIR += asterisk13 SUBDIR += avahi SUBDIR += avahi-app SUBDIR += avahi-autoipd SUBDIR += avahi-gtk SUBDIR += avahi-gtk3 SUBDIR += avahi-header SUBDIR += avahi-libdns SUBDIR += avahi-qt4 SUBDIR += avahi-sharp SUBDIR += axa SUBDIR += babeld SUBDIR += balance SUBDIR += beacon SUBDIR += beanstalkd SUBDIR += belle-sip SUBDIR += bindtest SUBDIR += binkd SUBDIR += bird SUBDIR += bird-devel SUBDIR += bird6 SUBDIR += bittwist SUBDIR += bmon SUBDIR += boclient SUBDIR += boinc-client SUBDIR += boinc_curses SUBDIR += bounce SUBDIR += bsdec2-image-upload SUBDIR += bsdproxy SUBDIR += bwi-firmware-kmod SUBDIR += bwn-firmware-kmod SUBDIR += bwping SUBDIR += c3270 SUBDIR += cagibi SUBDIR += ccxstream SUBDIR += cf SUBDIR += chrony SUBDIR += citrix_ica SUBDIR += clamz SUBDIR += cloud-init SUBDIR += clusterit SUBDIR += cnd SUBDIR += coda6_client SUBDIR += coda6_server SUBDIR += corkscrew SUBDIR += corosync SUBDIR += courier-authlib-ldap SUBDIR += crtmpserver SUBDIR += cryptcat SUBDIR += csocks SUBDIR += csync2 SUBDIR += ctrace SUBDIR += cvsup-static SUBDIR += cvsync SUBDIR += cyphesis SUBDIR += czmq SUBDIR += daemonlogger SUBDIR += dante SUBDIR += daq SUBDIR += datapipe SUBDIR += dbeacon SUBDIR += delegate SUBDIR += dgd SUBDIR += dgd-kernel SUBDIR += dgd-lpmud SUBDIR += dhcp6 SUBDIR += dhcpcd SUBDIR += dhcpd SUBDIR += dhcpd-pools SUBDIR += dhcpdump SUBDIR += dhcperf SUBDIR += dhcping SUBDIR += dhcprelay SUBDIR += dhcprelya SUBDIR += dictd SUBDIR += dictd-database SUBDIR += dimes SUBDIR += dosdetector SUBDIR += dpdk SUBDIR += dpinger SUBDIR += drawterm SUBDIR += dropbox-api-command SUBDIR += dropbox-uploader SUBDIR += dshell SUBDIR += dtcp SUBDIR += dtcpclient SUBDIR += e169-stats SUBDIR += easysoap SUBDIR += echoping SUBDIR += elixir-kafka_ex SUBDIR += elixir-oauth2 SUBDIR += empty SUBDIR += enet SUBDIR += erlang-ranch SUBDIR += erlang-xmlrpc SUBDIR += etrace SUBDIR += exabgp SUBDIR += exaddos SUBDIR += findmtu SUBDIR += flowgrep SUBDIR += fonulator SUBDIR += foreman-proxy SUBDIR += fpc-ldap SUBDIR += fpc-pcap SUBDIR += fping SUBDIR += freebsd-tftp SUBDIR += freebsd-uucp SUBDIR += freediameter SUBDIR += freenet6 SUBDIR += freeradius-client SUBDIR += freeradius2 SUBDIR += freeradius3 SUBDIR += freerdp SUBDIR += freeswitch SUBDIR += freevrrpd SUBDIR += fspclient SUBDIR += fspd SUBDIR += fsplib SUBDIR += g2ipmsg SUBDIR += geoclue SUBDIR += geocode-glib SUBDIR += geoipupdate SUBDIR += get_iplayer SUBDIR += gfbgraph SUBDIR += gini SUBDIR += gkrellmwireless2 SUBDIR += glflow SUBDIR += glib-networking SUBDIR += glusterfs SUBDIR += gnet2 SUBDIR += gnetcat SUBDIR += gnome-nettool SUBDIR += gnome-online-accounts SUBDIR += gnome-online-miners SUBDIR += gnu-dico SUBDIR += gnu-radius SUBDIR += go-amqp SUBDIR += go-cs SUBDIR += go-geoip SUBDIR += go.net SUBDIR += gofish SUBDIR += gogoc SUBDIR += google-cloud-sdk SUBDIR += google-daemon SUBDIR += google-startup-scripts SUBDIR += googlecl SUBDIR += gopher SUBDIR += gotthard SUBDIR += gpxe SUBDIR += gq SUBDIR += grdesktop SUBDIR += grilo SUBDIR += grilo-plugins SUBDIR += grive SUBDIR += grsync SUBDIR += gsk SUBDIR += gspoof SUBDIR += gssdp SUBDIR += gstreamer-plugins-libmms SUBDIR += gstreamer1-plugins-libmms SUBDIR += gtic SUBDIR += gtk-vnc SUBDIR += gtknetcat SUBDIR += guacamole-server SUBDIR += gupnp SUBDIR += gupnp-av SUBDIR += gupnp-dlna SUBDIR += gupnp-igd SUBDIR += gupnp-ui SUBDIR += gutenfetch SUBDIR += gwhois SUBDIR += h323plus SUBDIR += hanstunnel SUBDIR += haproxy SUBDIR += haproxy-devel SUBDIR += hexinject SUBDIR += hidentd SUBDIR += hinfo SUBDIR += hlmaster SUBDIR += honeyd SUBDIR += hostapd SUBDIR += howl SUBDIR += hping SUBDIR += hping-devel SUBDIR += hs-aws SUBDIR += hs-connection SUBDIR += hs-gsasl SUBDIR += hs-hoauth2 SUBDIR += hs-hostname SUBDIR += hs-iproute SUBDIR += hs-maccatcher SUBDIR += hs-network SUBDIR += hs-network-info SUBDIR += hs-network-multicast SUBDIR += hs-network-protocol-xmpp SUBDIR += hs-network-uri SUBDIR += hs-pcap SUBDIR += hs-publicsuffixlist SUBDIR += hs-sendfile SUBDIR += hs-simple-sendfile SUBDIR += hs-socks SUBDIR += hsflowd SUBDIR += htpdate SUBDIR += http_ping SUBDIR += httping SUBDIR += httpry SUBDIR += hupnp SUBDIR += iaxmodem SUBDIR += icmpinfo SUBDIR += icpld SUBDIR += iet SUBDIR += ifdepd SUBDIR += iffinder SUBDIR += ifstat SUBDIR += ifstated SUBDIR += igmpproxy SUBDIR += ilbc SUBDIR += imapproxy SUBDIR += intel-ixl-kmod SUBDIR += iodine SUBDIR += ip2location SUBDIR += ip6_int SUBDIR += ipdecap SUBDIR += ipgrab SUBDIR += iplog SUBDIR += ipsorc SUBDIR += ipsumdump SUBDIR += ipsvd SUBDIR += ipxe SUBDIR += irrd SUBDIR += isboot-kmod SUBDIR += isc-dhcp41-server SUBDIR += isc-dhcp43-client SUBDIR += isc-dhcp43-relay SUBDIR += isc-dhcp43-server SUBDIR += istgt SUBDIR += jags SUBDIR += jakarta-commons-net SUBDIR += java-beepcore SUBDIR += jcifs SUBDIR += jgroups SUBDIR += jicmp SUBDIR += jicmp6 SUBDIR += jrdesktop SUBDIR += jsch SUBDIR += jumpgate SUBDIR += jwhois SUBDIR += kafkacat SUBDIR += kamailio SUBDIR += kdenetwork4 SUBDIR += kdenetwork4-filesharing SUBDIR += kdenetwork4-strigi-analyzers SUBDIR += kea SUBDIR += kget SUBDIR += kio-upnp-ms SUBDIR += kippo SUBDIR += kissd SUBDIR += knc SUBDIR += knemo-kde4 SUBDIR += krdc SUBDIR += krfb SUBDIR += kwooty SUBDIR += l2tpd SUBDIR += l4ip SUBDIR += ladvd SUBDIR += lam SUBDIR += lambdamoo SUBDIR += latd SUBDIR += ldap-stats SUBDIR += ldap2dns SUBDIR += ldapbrowser SUBDIR += ldapdiff SUBDIR += ldapscripts SUBDIR += ldapsdk SUBDIR += ldapsh SUBDIR += lft SUBDIR += libarms SUBDIR += libbgpdump SUBDIR += libcapn SUBDIR += libcmis SUBDIR += libdmapsharing SUBDIR += libdnet SUBDIR += libexosip2 SUBDIR += libfb SUBDIR += libfixbuf SUBDIR += libgnetwork SUBDIR += libgweather SUBDIR += libilbc SUBDIR += libkfbapi SUBDIR += libkvkontakte SUBDIR += libmaia SUBDIR += libmateweather SUBDIR += libmaxminddb SUBDIR += libmediawiki SUBDIR += libmms SUBDIR += libmxp SUBDIR += libnatpmp SUBDIR += libnet SUBDIR += libnetdude SUBDIR += libnfs SUBDIR += libnids SUBDIR += libnss-cache SUBDIR += libnss-mysql SUBDIR += libnss-pgsql SUBDIR += liboauth SUBDIR += libopennet SUBDIR += liboping SUBDIR += libosip2 SUBDIR += libp0f SUBDIR += libpcap SUBDIR += libpcapnav SUBDIR += libproxy SUBDIR += libproxy-gnome SUBDIR += libproxy-gnome3 SUBDIR += libproxy-kde SUBDIR += libproxy-mozjs SUBDIR += libproxy-perl SUBDIR += libproxy-python SUBDIR += libproxy-webkit SUBDIR += librdkafka SUBDIR += librouteros SUBDIR += librsync SUBDIR += librsync1 SUBDIR += libsocket++ SUBDIR += libsocketcpp SUBDIR += libsrtp SUBDIR += libtnl SUBDIR += libtrace SUBDIR += libunp SUBDIR += libutp SUBDIR += libvncserver SUBDIR += libzapojit SUBDIR += libzmq2 SUBDIR += libzmq3 SUBDIR += libzmq4 SUBDIR += liferea SUBDIR += linknx SUBDIR += linphone SUBDIR += linux-c6-avahi-libs SUBDIR += linux-c6-openldap SUBDIR += linux-c6-tcp_wrappers-libs SUBDIR += linux-f10-nss_ldap SUBDIR += linux-f10-openldap SUBDIR += linuxigd SUBDIR += liveMedia SUBDIR += lla SUBDIR += ltm SUBDIR += lualdap SUBDIR += luasocket SUBDIR += lvwimax SUBDIR += mDNSResponder SUBDIR += macchanger SUBDIR += mad_fcl SUBDIR += malo-firmware-kmod SUBDIR += mdns-repeater SUBDIR += mediastreamer SUBDIR += mediatomb SUBDIR += megatools SUBDIR += mgen SUBDIR += micro_inetd SUBDIR += micro_proxy SUBDIR += minidlna SUBDIR += minisapserver SUBDIR += minissdpd SUBDIR += miniupnpc SUBDIR += miniupnpd SUBDIR += miredo SUBDIR += miruo SUBDIR += mlvpn SUBDIR += mono-zeroconf SUBDIR += mopd SUBDIR += morebalance SUBDIR += mosh SUBDIR += mosquitto SUBDIR += motsognir SUBDIR += mpd-l2tp-ipv6pd-client SUBDIR += mpd5 SUBDIR += mpich SUBDIR += mpich2 SUBDIR += mping SUBDIR += mrouted SUBDIR += msend SUBDIR += mtr SUBDIR += mtr-nox11 SUBDIR += nakenchat SUBDIR += nanomsg SUBDIR += nast SUBDIR += nats SUBDIR += nbd-server SUBDIR += nc SUBDIR += ncp SUBDIR += ndisc6 SUBDIR += ndpi SUBDIR += nepenthes SUBDIR += nepim SUBDIR += net6 SUBDIR += netatalk SUBDIR += netatalk3 SUBDIR += netcat SUBDIR += netdude SUBDIR += netembryo SUBDIR += netmap SUBDIR += netpipes SUBDIR += netscript SUBDIR += netsed SUBDIR += netselect SUBDIR += netstrain SUBDIR += nettest SUBDIR += netwib SUBDIR += neubot SUBDIR += nfsshell SUBDIR += ng_mikrotik_eoip SUBDIR += ngrep SUBDIR += nifmon SUBDIR += nload SUBDIR += nmsg SUBDIR += nocatsplash SUBDIR += norm SUBDIR += nos-ttb SUBDIR += nph SUBDIR += ns3 SUBDIR += nss-pam-ldapd SUBDIR += nss-pam-ldapd-sasl SUBDIR += nss_ldap SUBDIR += nsscache SUBDIR += nstxd SUBDIR += ntimed SUBDIR += ntlmaps SUBDIR += ntop SUBDIR += ntp SUBDIR += ntp-devel SUBDIR += ntraceroute SUBDIR += nusoap SUBDIR += nxproxy SUBDIR += nyancat SUBDIR += nylon SUBDIR += ocserv SUBDIR += ohphone SUBDIR += olsrd SUBDIR += omcmd SUBDIR += omnitty SUBDIR += onenetd SUBDIR += onioncat SUBDIR += opal SUBDIR += openafs SUBDIR += openbgpd SUBDIR += openbsc SUBDIR += opendpi SUBDIR += openggsn SUBDIR += openh323 SUBDIR += openldap24-client SUBDIR += openldap24-sasl-client SUBDIR += openldap24-server SUBDIR += openmpi SUBDIR += openmq SUBDIR += openmq-client SUBDIR += openntpd SUBDIR += opennx SUBDIR += openospfd SUBDIR += openpgm SUBDIR += openradius SUBDIR += opensips SUBDIR += openslp SUBDIR += opentracker SUBDIR += openvswitch SUBDIR += ortp SUBDIR += osrtspproxy SUBDIR += ossp-sa SUBDIR += ostinato SUBDIR += owamp SUBDIR += p5-Acme-HTTP SUBDIR += p5-AddressBook SUBDIR += p5-Amazon-SQS-Simple SUBDIR += p5-AnyEvent-MPRPC SUBDIR += p5-AnyEvent-MQTT SUBDIR += p5-AnyEvent-RabbitMQ SUBDIR += p5-AnyEvent-Twitter SUBDIR += p5-AnyEvent-Twitter-Stream SUBDIR += p5-AnyMQ-AMQP SUBDIR += p5-Apache2-SOAP SUBDIR += p5-BBS-Client SUBDIR += p5-BBS-UserInfo SUBDIR += p5-BBS-UserInfo-Maple3 SUBDIR += p5-BBS-UserInfo-Maple3itoc SUBDIR += p5-BBS-UserInfo-Ptt SUBDIR += p5-BBS-UserInfo-SOB SUBDIR += p5-BBS-UserInfo-Wretch SUBDIR += p5-Beanstalk-Client SUBDIR += p5-Cisco-IPPhone SUBDIR += p5-Crypt-DH-GMP SUBDIR += p5-Daemon-Generic SUBDIR += p5-Data-IPV4-Range-Parse SUBDIR += p5-EasyTCP SUBDIR += p5-Event-tcp SUBDIR += p5-File-Rsync SUBDIR += p5-File-RsyncP SUBDIR += p5-Filesys-SmbClient SUBDIR += p5-Frontier-RPC SUBDIR += p5-Geo-IP SUBDIR += p5-Geo-IP-PurePerl SUBDIR += p5-Geo-IPfree SUBDIR += p5-GeoIP2 SUBDIR += p5-Google-SAML-Request SUBDIR += p5-Google-SAML-Response SUBDIR += p5-Growl-GNTP SUBDIR += p5-IO-Interface SUBDIR += p5-IO-Socket-INET6 SUBDIR += p5-IO-Socket-IP SUBDIR += p5-IO-Socket-Multicast SUBDIR += p5-IO-Socket-Multicast6 SUBDIR += p5-IO-Socket-Timeout SUBDIR += p5-IO-Socket-UNIX-Util SUBDIR += p5-IP-Anonymous SUBDIR += p5-IP-Country SUBDIR += p5-IPC-Session SUBDIR += p5-JavaScript-RPC SUBDIR += p5-Kafka SUBDIR += p5-MaxMind-DB-Common SUBDIR += p5-MaxMind-DB-Reader SUBDIR += p5-MaxMind-DB-Writer SUBDIR += p5-Net SUBDIR += p5-Net-AMQP SUBDIR += p5-Net-APNS SUBDIR += p5-Net-APNs-Extended SUBDIR += p5-Net-ARP SUBDIR += p5-Net-Address-Ethernet SUBDIR += p5-Net-Address-IPv4-Local SUBDIR += p5-Net-Amazon SUBDIR += p5-Net-Amazon-AWSSign SUBDIR += p5-Net-Amazon-EC2 SUBDIR += p5-Net-Amazon-MechanicalTurk SUBDIR += p5-Net-Amazon-S3 SUBDIR += p5-Net-Amazon-Signature SUBDIR += p5-Net-Amazon-Signature-V3 SUBDIR += p5-Net-Amazon-Signature-V4 SUBDIR += p5-Net-Amazon-Thumbnail SUBDIR += p5-Net-Analysis SUBDIR += p5-Net-Appliance-Phrasebook SUBDIR += p5-Net-Appliance-Session SUBDIR += p5-Net-BGP SUBDIR += p5-Net-Blogger SUBDIR += p5-Net-CIDR-Lite SUBDIR += p5-Net-CIDR-MobileJP SUBDIR += p5-Net-CIDR-Set SUBDIR += p5-Net-CLI-Interact SUBDIR += p5-Net-CSTA SUBDIR += p5-Net-CascadeCopy SUBDIR += p5-Net-Cassandra SUBDIR += p5-Net-Cassandra-Easy SUBDIR += p5-Net-DAV-Server SUBDIR += p5-Net-DHCP SUBDIR += p5-Net-DHCP-Watch SUBDIR += p5-Net-DHCPClient SUBDIR += p5-Net-DLookup SUBDIR += p5-Net-Daemon SUBDIR += p5-Net-Delicious SUBDIR += p5-Net-Dict SUBDIR += p5-Net-Divert SUBDIR += p5-Net-Dropbox-API SUBDIR += p5-Net-EPP SUBDIR += p5-Net-EPP-Proxy SUBDIR += p5-Net-FS-Flickr SUBDIR += p5-Net-FS-Gmail SUBDIR += p5-Net-FTP-AutoReconnect SUBDIR += p5-Net-FTP-File SUBDIR += p5-Net-Finger SUBDIR += p5-Net-Flow SUBDIR += p5-Net-Frame SUBDIR += p5-Net-Frame-Dump SUBDIR += p5-Net-Frame-Layer-ICMPv6 SUBDIR += p5-Net-Frame-Layer-IPv6 SUBDIR += p5-Net-GitHub SUBDIR += p5-Net-Gnats SUBDIR += p5-Net-Google SUBDIR += p5-Net-Google-Analytics SUBDIR += p5-Net-Google-AuthSub SUBDIR += p5-Net-Google-Calendar SUBDIR += p5-Net-Google-Code SUBDIR += p5-Net-Google-DataAPI SUBDIR += p5-Net-Google-PicasaWeb SUBDIR += p5-Net-Google-SafeBrowsing2 SUBDIR += p5-Net-Google-Spreadsheets SUBDIR += p5-Net-Growl SUBDIR += p5-Net-GrowlClient SUBDIR += p5-Net-HL7 SUBDIR += p5-Net-HTTP SUBDIR += p5-Net-HTTP-Spore SUBDIR += p5-Net-HTTP-Spore-Middleware-Header SUBDIR += p5-Net-HTTPS-Any SUBDIR += p5-Net-HTTPS-NB SUBDIR += p5-Net-Hiveminder SUBDIR += p5-Net-INET6Glue SUBDIR += p5-Net-IP-Minimal SUBDIR += p5-Net-IP-RangeCompare SUBDIR += p5-Net-IPTrie SUBDIR += p5-Net-IRR SUBDIR += p5-Net-Ident SUBDIR += p5-Net-Ifconfig-Wrapper SUBDIR += p5-Net-Interface SUBDIR += p5-Net-Jaiku SUBDIR += p5-Net-Jifty SUBDIR += p5-Net-LDAP-AutoDNs SUBDIR += p5-Net-LDAP-AutoServer SUBDIR += p5-Net-LDAP-Express SUBDIR += p5-Net-LDAP-FilterBuilder SUBDIR += p5-Net-LDAP-LDAPhash SUBDIR += p5-Net-LDAP-Makepath SUBDIR += p5-Net-LDAP-Server SUBDIR += p5-Net-LDAP-Server-Test SUBDIR += p5-Net-LDAP-posixAccount SUBDIR += p5-Net-LDAP-posixGroup SUBDIR += p5-Net-Libdnet SUBDIR += p5-Net-LimeLight-Purge SUBDIR += p5-Net-MAC SUBDIR += p5-Net-MAC-Vendor SUBDIR += p5-Net-MQTT SUBDIR += p5-Net-Mosso-CloudFiles SUBDIR += p5-Net-MovableType SUBDIR += p5-Net-NBName SUBDIR += p5-Net-NBsocket SUBDIR += p5-Net-NIS SUBDIR += p5-Net-NIS-Listgroup SUBDIR += p5-Net-Nessus-XMLRPC SUBDIR += p5-Net-Nmsg SUBDIR += p5-Net-OAuth SUBDIR += p5-Net-OAuth-Simple SUBDIR += p5-Net-OAuth2 SUBDIR += p5-Net-OpenID-Consumer SUBDIR += p5-Net-OpenSSH SUBDIR += p5-Net-OpenSSH-Parallel SUBDIR += p5-Net-OpenStack-Attack SUBDIR += p5-Net-Packet SUBDIR += p5-Net-Packet-Target SUBDIR += p5-Net-ParseWhois SUBDIR += p5-Net-Patricia SUBDIR += p5-Net-Pcap SUBDIR += p5-Net-PcapUtils SUBDIR += p5-Net-Ping SUBDIR += p5-Net-Ping-External SUBDIR += p5-Net-Proxy SUBDIR += p5-Net-PubSubHubbub-Publisher SUBDIR += p5-Net-RTP SUBDIR += p5-Net-RabbitFoot SUBDIR += p5-Net-RabbitMQ SUBDIR += p5-Net-Radius SUBDIR += p5-Net-Random SUBDIR += p5-Net-RawIP SUBDIR += p5-Net-RawSock SUBDIR += p5-Net-Rendezvous-Publish SUBDIR += p5-Net-Riak SUBDIR += p5-Net-Rsh SUBDIR += p5-Net-SAP SUBDIR += p5-Net-SCP SUBDIR += p5-Net-SCP-Expect SUBDIR += p5-Net-SDP SUBDIR += p5-Net-SFTP SUBDIR += p5-Net-SFTP-Foreign SUBDIR += p5-Net-SIP SUBDIR += p5-Net-SMPP SUBDIR += p5-Net-SMS-Clickatell SUBDIR += p5-Net-SMS-Mollie SUBDIR += p5-Net-SMS-PChome SUBDIR += p5-Net-SNPP SUBDIR += p5-Net-SPDY SUBDIR += p5-Net-SSH SUBDIR += p5-Net-SSH-Expect SUBDIR += p5-Net-SSH-Mechanize SUBDIR += p5-Net-SSH-Perl SUBDIR += p5-Net-SSH2 SUBDIR += p5-Net-STOMP-Client SUBDIR += p5-Net-Server SUBDIR += p5-Net-Server-Coro SUBDIR += p5-Net-Server-SS-PreFork SUBDIR += p5-Net-Subnet SUBDIR += p5-Net-Syslog SUBDIR += p5-Net-TCLink SUBDIR += p5-Net-TacacsPlus SUBDIR += p5-Net-TcpDumpLog SUBDIR += p5-Net-Telnet SUBDIR += p5-Net-Telnet-Netscreen SUBDIR += p5-Net-TiVo SUBDIR += p5-Net-Todoist SUBDIR += p5-Net-Traceroute SUBDIR += p5-Net-Traceroute-PurePerl SUBDIR += p5-Net-Traceroute6 SUBDIR += p5-Net-Trackback SUBDIR += p5-Net-Twitter SUBDIR += p5-Net-Twitter-Lite SUBDIR += p5-Net-VNC SUBDIR += p5-Net-Wake SUBDIR += p5-Net-WhitePages SUBDIR += p5-Net-Whois SUBDIR += p5-Net-Whois-ARIN SUBDIR += p5-Net-Whois-IP SUBDIR += p5-Net-Whois-RIPE SUBDIR += p5-Net-Whois-Raw SUBDIR += p5-Net-Works SUBDIR += p5-Net-Write SUBDIR += p5-Net-XWhois SUBDIR += p5-Net-Yadis SUBDIR += p5-Net-Z3950-SimpleServer SUBDIR += p5-Net-Z3950-ZOOM SUBDIR += p5-Net-ext SUBDIR += p5-Net-sFlow SUBDIR += p5-Net-uFTP SUBDIR += p5-NetAddr-IP-Count SUBDIR += p5-NetAddr-MAC SUBDIR += p5-NetPacket SUBDIR += p5-OAI-Harvester SUBDIR += p5-OurNet-BBS SUBDIR += p5-OurNet-BBSAgent SUBDIR += p5-POE-Component-Client-Ident SUBDIR += p5-POE-Component-Client-Keepalive SUBDIR += p5-POE-Component-Client-Ping SUBDIR += p5-POE-Component-Client-Telnet SUBDIR += p5-POE-Component-Client-Traceroute SUBDIR += p5-POE-Component-Client-Twitter SUBDIR += p5-POE-Component-Client-Whois SUBDIR += p5-POE-Component-ControlPort SUBDIR += p5-POE-Component-Generic SUBDIR += p5-POE-Component-Jabber SUBDIR += p5-POE-Component-Pcap SUBDIR += p5-POE-Component-PubSub SUBDIR += p5-POE-Component-Server-Twirc SUBDIR += p5-POEx-Role-TCPServer SUBDIR += p5-POSIX-Socket SUBDIR += p5-POSIX-getpeername SUBDIR += p5-Parallel-Pvm SUBDIR += p5-Phone-Info SUBDIR += p5-PlRPC SUBDIR += p5-Queue-Beanstalk SUBDIR += p5-REST-Application SUBDIR += p5-REST-Google SUBDIR += p5-RPC-EPC-Service SUBDIR += p5-RPC-Simple SUBDIR += p5-RPC-XML SUBDIR += p5-ResourcePool-Resource-Net-LDAP SUBDIR += p5-ResourcePool-Resource-SOAP-Lite SUBDIR += p5-Rose-URI SUBDIR += p5-S3 SUBDIR += p5-SOAP SUBDIR += p5-SOAP-Amazon-S3 SUBDIR += p5-SOAP-Data-Builder SUBDIR += p5-SOAP-Lite SUBDIR += p5-SOAP-MySOAP SUBDIR += p5-SOAP-XML-Client SUBDIR += p5-Samba-LDAP SUBDIR += p5-Server-Starter SUBDIR += p5-Socket SUBDIR += p5-Socket-Class SUBDIR += p5-Socket-GetAddrInfo SUBDIR += p5-Socket-Multicast6 SUBDIR += p5-Socket6 SUBDIR += p5-Socks SUBDIR += p5-Sort-Key-IPv4 SUBDIR += p5-Test-URI SUBDIR += p5-TFTP SUBDIR += p5-URI SUBDIR += p5-URI-FromHash SUBDIR += p5-URI-Match SUBDIR += p5-URI-Nested SUBDIR += p5-URI-OpenURL SUBDIR += p5-URI-Query SUBDIR += p5-URI-SmartURI SUBDIR += p5-URI-Template SUBDIR += p5-URI-Template-Restrict SUBDIR += p5-URI-db SUBDIR += p5-URI-ws SUBDIR += p5-VM-EC2 SUBDIR += p5-VM-EC2-Security-CredentialCache SUBDIR += p5-Validate-Net SUBDIR += p5-WebService-Dropbox SUBDIR += p5-WebService-Prowl SUBDIR += p5-What SUBDIR += p5-X500-DN SUBDIR += p5-XML-Compile-SOAP SUBDIR += p5-XML-Compile-SOAP-AnyEvent SUBDIR += p5-XML-Compile-SOAP-Daemon SUBDIR += p5-XML-Compile-SOAP-WSA SUBDIR += p5-XML-Compile-WSDL11 SUBDIR += p5-XML-Fast SUBDIR += p5-XML-RPC SUBDIR += p5-XML-RPC-Fast SUBDIR += p5-XMLRPC-Lite SUBDIR += p5-XPC SUBDIR += p5-ZConf SUBDIR += p5-ZConf-Bookmarks SUBDIR += p5-ZeroMQ SUBDIR += p5-ldap2pf SUBDIR += p5-ldap2pw SUBDIR += p5-perl-ldap SUBDIR += p5-srv2pf SUBDIR += pacemaker SUBDIR += packetdrill SUBDIR += packter-agent SUBDIR += panoptis SUBDIR += paris-traceroute SUBDIR += passlogd SUBDIR += pathneck SUBDIR += pbnc SUBDIR += pdb SUBDIR += pear-Auth_RADIUS SUBDIR += pear-File_Bittorrent2 SUBDIR += pear-Horde_Kolab_Server SUBDIR += pear-Horde_Kolab_Session SUBDIR += pear-Horde_Ldap SUBDIR += pear-Horde_Rpc SUBDIR += pear-Horde_Scribe SUBDIR += pear-Horde_Socket_Client SUBDIR += pear-Horde_Url SUBDIR += pear-Net_CDDB SUBDIR += pear-Net_CheckIP SUBDIR += pear-Net_DIME SUBDIR += pear-Net_DNSBL SUBDIR += pear-Net_Dict SUBDIR += pear-Net_Finger SUBDIR += pear-Net_Geo SUBDIR += pear-Net_GeoIP SUBDIR += pear-Net_IDNA SUBDIR += pear-Net_IPv4 SUBDIR += pear-Net_IPv6 SUBDIR += pear-Net_Ident SUBDIR += pear-Net_LDAP SUBDIR += pear-Net_LDAP2 SUBDIR += pear-Net_MAC SUBDIR += pear-Net_NNTP SUBDIR += pear-Net_Nmap SUBDIR += pear-Net_POP3 SUBDIR += pear-Net_Ping SUBDIR += pear-Net_SMS SUBDIR += pear-Net_SMTP SUBDIR += pear-Net_Server SUBDIR += pear-Net_Sieve SUBDIR += pear-Net_Socket SUBDIR += pear-Net_Traceroute SUBDIR += pear-Net_URL SUBDIR += pear-Net_URL2 SUBDIR += pear-Net_URL_Mapper SUBDIR += pear-Net_UserAgent_Detect SUBDIR += pear-Net_UserAgent_Mobile SUBDIR += pear-Net_Vpopmaild SUBDIR += pear-Net_Whois SUBDIR += pear-SOAP SUBDIR += pear-Services_Pingback SUBDIR += pear-Services_Twitter SUBDIR += pear-URI_Template SUBDIR += pear-XML_RPC SUBDIR += pear-XML_RPC2 SUBDIR += pecl-amqp SUBDIR += pecl-apn SUBDIR += pecl-cvsclient SUBDIR += pecl-geoip SUBDIR += pecl-gupnp SUBDIR += pecl-ip2location SUBDIR += pecl-mosquitto SUBDIR += pecl-oauth SUBDIR += pecl-radius SUBDIR += pecl-smbclient SUBDIR += pecl-yaz SUBDIR += pecl-yp SUBDIR += pecl-zmq SUBDIR += pen SUBDIR += pfinger SUBDIR += phamm SUBDIR += php55-ldap SUBDIR += php55-soap SUBDIR += php55-sockets SUBDIR += php55-xmlrpc SUBDIR += php56-ldap SUBDIR += php56-soap SUBDIR += php56-sockets SUBDIR += php56-xmlrpc SUBDIR += php70-ldap SUBDIR += php70-soap SUBDIR += php70-sockets SUBDIR += php70-xmlrpc SUBDIR += phpldapadmin SUBDIR += pim6-tools SUBDIR += pim6dd SUBDIR += pim6sd SUBDIR += pimd SUBDIR += pimdd SUBDIR += pipsecd SUBDIR += pjsip SUBDIR += pjsip-extsrtp SUBDIR += pktanon SUBDIR += pload SUBDIR += plugdaemon SUBDIR += pmf SUBDIR += polyorb SUBDIR += poptop SUBDIR += portfwd SUBDIR += pptpclient SUBDIR += proftpd-mod_ldap SUBDIR += prosearch SUBDIR += proxy-connect SUBDIR += proxy-suite SUBDIR += proxychains SUBDIR += proxychains-ng SUBDIR += prtunnel SUBDIR += ptpd2 SUBDIR += ptunnel SUBDIR += pure-sockets SUBDIR += pvm SUBDIR += pwhois SUBDIR += pxe SUBDIR += pxe-pdhcp SUBDIR += py-GeoIP SUBDIR += py-GeoIP2 SUBDIR += py-amqp SUBDIR += py-amqplib SUBDIR += py-avahi SUBDIR += py-beanstalkc SUBDIR += py-cloudfiles SUBDIR += py-dpkt SUBDIR += py-dugong SUBDIR += py-ec2-cli-tools SUBDIR += py-eventlet SUBDIR += py-gntp SUBDIR += py-gspread SUBDIR += py-gspreadsheet SUBDIR += py-impacket SUBDIR += py-ipaddress SUBDIR += py-iplib SUBDIR += py-kafka-python SUBDIR += py-kombu SUBDIR += py-ldap SUBDIR += py-ldap3 SUBDIR += py-ldaptor SUBDIR += py-libcloud SUBDIR += py-libdnet SUBDIR += py-libnet SUBDIR += py-matrix-synapse SUBDIR += py-maxminddb SUBDIR += py-miniupnpc SUBDIR += py-msrplib SUBDIR += py-ndg_httpsclient SUBDIR += py-netaddr SUBDIR += py-netif SUBDIR += py-netifaces SUBDIR += py-netlib SUBDIR += py-netstring SUBDIR += py-novaclient SUBDIR += py-ntplib SUBDIR += py-oauth SUBDIR += py-oauth2 SUBDIR += py-paho-mqtt SUBDIR += py-pcap SUBDIR += py-pcapy SUBDIR += py-pcs SUBDIR += py-port-for SUBDIR += py-pybeanstalk SUBDIR += py-pygeoip SUBDIR += py-pyldap SUBDIR += py-pynmsg SUBDIR += py-pynsq SUBDIR += py-pypcap SUBDIR += py-pysendfile SUBDIR += py-pysmb SUBDIR += py-pysocks SUBDIR += py-pystun SUBDIR += py-python-bitcoinrpc SUBDIR += py-pyvmomi SUBDIR += py-pyzmq SUBDIR += py-qt4-network SUBDIR += py-qt5-network SUBDIR += py-radix SUBDIR += py-raet SUBDIR += py-ripe.atlas.cousteau SUBDIR += py-ripe.atlas.sagan SUBDIR += py-ripe.atlas.tools SUBDIR += py-s3cmd SUBDIR += py-s3transfer SUBDIR += py-simplesoap SUBDIR += py-smbpasswd SUBDIR += py-soappy SUBDIR += py-socketio-client SUBDIR += py-speedtest-cli SUBDIR += py-suds SUBDIR += py-terminado SUBDIR += py-tofu SUBDIR += py-tweepy SUBDIR += py-twistedPair SUBDIR += py-twitter SUBDIR += py-twitter-tools SUBDIR += py-txamqp SUBDIR += py-txrestapi SUBDIR += py-uritemplate SUBDIR += py-urllib3 SUBDIR += py-wolframalpha SUBDIR += py-xmlrpc SUBDIR += py-zope.proxy SUBDIR += py-zsi SUBDIR += py3-netifaces SUBDIR += pygopherd SUBDIR += pynids SUBDIR += pyrad SUBDIR += pythondirector SUBDIR += qadsl SUBDIR += qjsonrpc SUBDIR += qoauth SUBDIR += qt4-network SUBDIR += qt5-enginio SUBDIR += qt5-network SUBDIR += qtweetlib SUBDIR += quagga SUBDIR += queso SUBDIR += quiterss SUBDIR += quoted SUBDIR += rabbitmq SUBDIR += rabbitmq-c SUBDIR += rabbitmq-c-devel SUBDIR += raddump SUBDIR += radiator SUBDIR += radiusclient SUBDIR += radiusd-cistron SUBDIR += radreport SUBDIR += radsecproxy SUBDIR += radvd SUBDIR += raggle SUBDIR += rdapper SUBDIR += rdesktop SUBDIR += rdist6 SUBDIR += recvnet SUBDIR += redir SUBDIR += relayd SUBDIR += remmina SUBDIR += remmina-plugin-gnome SUBDIR += remmina-plugin-i18n SUBDIR += remmina-plugin-nx SUBDIR += remmina-plugin-telepathy SUBDIR += remmina-plugin-vnc SUBDIR += remmina-plugin-xdmcp SUBDIR += remmina-plugins SUBDIR += remotebox SUBDIR += remotedesk SUBDIR += repeater SUBDIR += reposado SUBDIR += rfbproxy SUBDIR += rinetd SUBDIR += ripe-whois SUBDIR += rp-pppoe SUBDIR += rsplib SUBDIR += rsync SUBDIR += rsync-bpc SUBDIR += rtg SUBDIR += rtpbreak SUBDIR += rtpproxy SUBDIR += rtptools SUBDIR += ruby-dict SUBDIR += ruby-icmp SUBDIR += ruby-tcpsocketpipe SUBDIR += ruby-tserver SUBDIR += rubygem-amazon-ec2 SUBDIR += rubygem-amq-protocol SUBDIR += rubygem-amqp SUBDIR += rubygem-amqp-utils SUBDIR += rubygem-aws-s3 SUBDIR += rubygem-aws-ses SUBDIR += rubygem-bunny SUBDIR += rubygem-connection_pool SUBDIR += rubygem-dogapi SUBDIR += rubygem-domain_name SUBDIR += rubygem-dropbox-sdk SUBDIR += rubygem-epp-client-afnic SUBDIR += rubygem-epp-client-base SUBDIR += rubygem-epp-client-rgp SUBDIR += rubygem-epp-client-secdns SUBDIR += rubygem-epp-client-smallregistry SUBDIR += rubygem-fog-aliyun SUBDIR += rubygem-fog-atmos SUBDIR += rubygem-fog-aws SUBDIR += rubygem-fog-brightbox SUBDIR += rubygem-fog-cloudatcost SUBDIR += rubygem-fog-dynect SUBDIR += rubygem-fog-ecloud SUBDIR += rubygem-fog-google SUBDIR += rubygem-fog-local SUBDIR += rubygem-fog-openstack SUBDIR += rubygem-fog-powerdns SUBDIR += rubygem-fog-profitbricks SUBDIR += rubygem-fog-rackspace SUBDIR += rubygem-fog-radosgw SUBDIR += rubygem-fog-riakcs SUBDIR += rubygem-fog-sakuracloud SUBDIR += rubygem-fog-serverlove SUBDIR += rubygem-fog-softlayer SUBDIR += rubygem-fog-storm_on_demand SUBDIR += rubygem-fog-terremark SUBDIR += rubygem-fog-vmfusion SUBDIR += rubygem-fog-voxel SUBDIR += rubygem-fog-vsphere SUBDIR += rubygem-fog-xenserver SUBDIR += rubygem-geoip SUBDIR += rubygem-gitlab_omniauth-ldap SUBDIR += rubygem-http_parser.rb SUBDIR += rubygem-httpauth SUBDIR += rubygem-ipaddress SUBDIR += rubygem-iproto SUBDIR += rubygem-lita-gems SUBDIR += rubygem-macaddr SUBDIR += rubygem-net-ldap SUBDIR += rubygem-net-netrc SUBDIR += rubygem-net-ping SUBDIR += rubygem-netrc SUBDIR += rubygem-network_interface SUBDIR += rubygem-oauth SUBDIR += rubygem-oauth2 SUBDIR += rubygem-octokit SUBDIR += rubygem-octopress-deploy SUBDIR += rubygem-omniauth-auth0 SUBDIR += rubygem-omniauth-azure-oauth2 SUBDIR += rubygem-omniauth-facebook SUBDIR += rubygem-omniauth-github SUBDIR += rubygem-omniauth-github-discourse SUBDIR += rubygem-omniauth-google-oauth2 SUBDIR += rubygem-omniauth-oauth SUBDIR += rubygem-omniauth-oauth2 SUBDIR += rubygem-omniauth-openid SUBDIR += rubygem-omniauth-twitter SUBDIR += rubygem-open-uri-cached SUBDIR += rubygem-opennebula SUBDIR += rubygem-packetfu SUBDIR += rubygem-pcaprub SUBDIR += rubygem-rabbiter SUBDIR += rubygem-rbvmomi SUBDIR += rubygem-right_aws SUBDIR += rubygem-right_flexiscale SUBDIR += rubygem-right_gogrid SUBDIR += rubygem-right_http_connection SUBDIR += rubygem-right_slicehost SUBDIR += rubygem-rsync SUBDIR += rubygem-ruby-growl SUBDIR += rubygem-ruby-openid SUBDIR += rubygem-ruby-yadis SUBDIR += rubygem-rubyntlm SUBDIR += rubygem-rubytter SUBDIR += rubygem-rudy SUBDIR += rubygem-rye SUBDIR += rubygem-simple_oauth SUBDIR += rubygem-stompserver SUBDIR += rubygem-t SUBDIR += rubygem-tweetstream SUBDIR += rubygem-twitter SUBDIR += rubygem-twitter-stream SUBDIR += rubygem-twitter4r SUBDIR += rubygem-uri-redis SUBDIR += rubygem-whois SUBDIR += rude SUBDIR += rwhoisd SUBDIR += samba-libsmbclient SUBDIR += samba-nmblookup SUBDIR += samba-smbclient SUBDIR += samba36 SUBDIR += samba42 SUBDIR += samba43 SUBDIR += samba44 SUBDIR += samplicator SUBDIR += sbd SUBDIR += scamper SUBDIR += scapy SUBDIR += scnc SUBDIR += scr_ipfm SUBDIR += scribe SUBDIR += sdl2_net SUBDIR += sdl_net SUBDIR += seda SUBDIR += self-service-password SUBDIR += sendemail SUBDIR += sendsms SUBDIR += sendsnpp SUBDIR += serveez SUBDIR += serviio SUBDIR += sflowtool SUBDIR += shadowsocks-libev SUBDIR += shelldap SUBDIR += shmux SUBDIR += sie-nmsg SUBDIR += simpleproxy SUBDIR += sip_scenario SUBDIR += sippy_b2bua SUBDIR += siproxd SUBDIR += sipsak SUBDIR += sixxs-aiccu SUBDIR += skstream SUBDIR += sl2tps SUBDIR += slurm SUBDIR += smb4k-kde4 SUBDIR += smbldap-tools SUBDIR += smcroute SUBDIR += smm++ SUBDIR += sngrep SUBDIR += sniffit SUBDIR += sntop SUBDIR += sobby SUBDIR += socat + SUBDIR += sock SUBDIR += socketbind SUBDIR += socketpipe SUBDIR += socketw SUBDIR += sofia-sip SUBDIR += spideroak SUBDIR += splatd SUBDIR += spoofer SUBDIR += spread SUBDIR += spread-j SUBDIR += spread4 SUBDIR += sprinkle SUBDIR += sqtop SUBDIR += srelay SUBDIR += ss5 SUBDIR += ssldump SUBDIR += sslh SUBDIR += ssltunnel-client SUBDIR += ssltunnel-server SUBDIR += ssmping SUBDIR += ssspl SUBDIR += ssvnc SUBDIR += stf-6rd-kmod SUBDIR += stone SUBDIR += stund SUBDIR += subnetcalc SUBDIR += suckblow SUBDIR += sup SUBDIR += svnup SUBDIR += syncthing SUBDIR += syncthing-cli SUBDIR += syncthing-discosrv SUBDIR += syncthing-inotify SUBDIR += tableutil SUBDIR += tac_plus4 SUBDIR += tapidbus SUBDIR += tayga SUBDIR += tclsoap SUBDIR += tcludp SUBDIR += tcpcat SUBDIR += tcpdstat SUBDIR += tcpdump SUBDIR += tcpdump398 SUBDIR += tcpflow SUBDIR += tcpick SUBDIR += tcpillust SUBDIR += tcping SUBDIR += tcpkali SUBDIR += tcpmssd SUBDIR += tcpproxy SUBDIR += tcpreen SUBDIR += tcpsg SUBDIR += tcpshow SUBDIR += tcpslice SUBDIR += tcpsplit SUBDIR += tcpstat SUBDIR += tcptrace SUBDIR += tcptraceroute SUBDIR += tcptraceroute-devel SUBDIR += tcpview SUBDIR += tcpwatch SUBDIR += tcpxd SUBDIR += tcpxtract SUBDIR += tdetect SUBDIR += tftpgrab SUBDIR += thcrut SUBDIR += throttled SUBDIR += tigervnc SUBDIR += tightvnc SUBDIR += tintin++ SUBDIR += tiny-network-utilities SUBDIR += tinyfugue SUBDIR += tinyldap SUBDIR += tn5250 SUBDIR += tn5250j SUBDIR += toonel SUBDIR += torsocks SUBDIR += traceroute SUBDIR += traff SUBDIR += trafshow SUBDIR += trafshow3 SUBDIR += tramp SUBDIR += trickle SUBDIR += tridiavnc SUBDIR += tsclient SUBDIR += tshark SUBDIR += tshark-lite SUBDIR += tsocks SUBDIR += tucan SUBDIR += turnserver SUBDIR += turses SUBDIR += twitux SUBDIR += u6rd SUBDIR += ucarp SUBDIR += udptunnel SUBDIR += udpxy SUBDIR += udt SUBDIR += uget SUBDIR += uhttpmock SUBDIR += ulxmlrpcpp SUBDIR += unfs3 SUBDIR += unison SUBDIR += unison-devel SUBDIR += unison-nox11 SUBDIR += unison232 SUBDIR += unison240 SUBDIR += unix2tcp SUBDIR += uplog SUBDIR += urelay SUBDIR += uriparser SUBDIR += urlendec SUBDIR += usbredir SUBDIR += userfw SUBDIR += utftpd SUBDIR += vblade SUBDIR += vde SUBDIR += vde2 SUBDIR += vinagre SUBDIR += vino SUBDIR += vmware-vsphere-cli SUBDIR += vnc SUBDIR += vncreflector SUBDIR += vnstat SUBDIR += vortex SUBDIR += vtun SUBDIR += wackamole SUBDIR += wackford-squeers SUBDIR += wakeonlan SUBDIR += whois SUBDIR += widentd SUBDIR += wireshark SUBDIR += wireshark-lite SUBDIR += wireshark-qt5 SUBDIR += wizd SUBDIR += wlan2eth SUBDIR += wmlj SUBDIR += wmnd SUBDIR += wmnet SUBDIR += wmnet2 SUBDIR += wmnetload SUBDIR += wmnetmon SUBDIR += wmpiki SUBDIR += wmping SUBDIR += wmwave SUBDIR += wmwifi SUBDIR += wmwlmon SUBDIR += wol SUBDIR += wpa_gui SUBDIR += wping SUBDIR += x11vnc SUBDIR += x2goclient SUBDIR += x2goclient-cli SUBDIR += xferstats SUBDIR += xipmsg SUBDIR += xisp SUBDIR += xmlrpc-c SUBDIR += xmlrpc-c-devel SUBDIR += xmlrpc-epi SUBDIR += xorp SUBDIR += xprobe SUBDIR += xpvm SUBDIR += xrdesktop2 SUBDIR += xrdp SUBDIR += xrdp-devel SUBDIR += yami4 SUBDIR += yaph SUBDIR += yate SUBDIR += yaz SUBDIR += yaz++ SUBDIR += yazproxy SUBDIR += yconalyzer SUBDIR += yptransitd SUBDIR += zebra SUBDIR += zebra-server SUBDIR += zeroconf-ioslave SUBDIR += zerotier SUBDIR += zillion SUBDIR += zmap SUBDIR += zsync .include Index: head/net/sock/Makefile =================================================================== --- head/net/sock/Makefile (nonexistent) +++ head/net/sock/Makefile (revision 415801) @@ -0,0 +1,16 @@ +# Created by: Steve Jacobson +# $FreeBSD$ + +PORTNAME= sock +PORTVERSION= 0.3.2 +CATEGORIES= net +MASTER_SITES= http://www.icir.org/christian/downloads/ + +MAINTAINER= sjac@cs.stanford.edu +COMMENT= W. Richard Stevens' sock program + +HAS_CONFIGURE= yes + +PLIST_FILES= bin/sock + +.include Property changes on: head/net/sock/Makefile ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:keywords ## -0,0 +1 ## +FreeBSD=%H \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/plain \ No newline at end of property Index: head/net/sock/distinfo =================================================================== --- head/net/sock/distinfo (nonexistent) +++ head/net/sock/distinfo (revision 415801) @@ -0,0 +1,2 @@ +SHA256 (sock-0.3.2.tar.gz) = 4ddc33767900e7cd0a4cc0f4d808638d7cfcb746c23e12274c8eba0622eee2eb +SIZE (sock-0.3.2.tar.gz) = 113640 Property changes on: head/net/sock/distinfo ___________________________________________________________________ Added: fbsd:nokeywords ## -0,0 +1 ## +yes \ No newline at end of property Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/plain \ No newline at end of property Index: head/net/sock/files/patch-src__cliopen.c =================================================================== --- head/net/sock/files/patch-src__cliopen.c (nonexistent) +++ head/net/sock/files/patch-src__cliopen.c (revision 415801) @@ -0,0 +1,264 @@ +--- src/cliopen.c.orig 2010-05-28 00:03:25 UTC ++++ src/cliopen.c +@@ -10,42 +10,107 @@ + + #include "sock.h" + ++/* ++ * Try to convert the host name as an IPv4 dotted-decimal number ++ * or an IPv6 address. ++ */ ++int convert_host_address(char *host) ++{ ++ struct in_addr inaddr; ++ char inaddr_buf[INET6_ADDRSTRLEN]; ++ ++ if (AF_INET == af_46) { ++ if (inet_pton(AF_INET, host, &inaddr) == 1) { ++ /* IPv4 dotted-decimal */ ++ servaddr4.sin_addr = inaddr; ++ ++ return (1); ++ } ++ } else { ++ if (inet_pton(AF_INET6, host, inaddr_buf) == 1) { ++ /* IPv6 address */ ++ memcpy(&servaddr6.sin6_addr, inaddr_buf, ++ sizeof(struct in6_addr)); ++ ++ return (1); ++ } ++ } ++ ++ return (0); ++} ++ ++/* ++ * Try to convert the host name as a host name string. ++ */ ++int convert_host_name(char *host) ++{ ++ struct hostent *hp; ++ ++ if (AF_INET == af_46) { ++ if ( (hp = gethostbyname2(host, AF_INET)) != NULL) { ++ /* IPv4 address */ ++ memcpy(&servaddr4.sin_addr, hp->h_addr, hp->h_length); ++ ++ return (1); ++ } ++ } else { ++ /* ++ * Fixme: This doesn't work on FreeBSD 8.4. ++ * Only an IPv4 address is returned. ++ * getaddrinfo() doesn't work either. ++ */ ++ if ( (hp = gethostbyname2(host, AF_INET6)) != NULL) { ++ /* IPv6 address */ ++ memcpy(&servaddr6.sin6_addr, hp->h_addr, hp->h_length); ++ ++ return (1); ++ } ++ } ++ ++ return (0); ++} ++ + int cliopen(char *host, char *port) + { + int fd, i, on; + char *protocol; +- struct in_addr inaddr; ++ char inaddr_buf[INET6_ADDRSTRLEN]; + struct servent *sp; +- struct hostent *hp; ++ socklen_t socklen; + + protocol = udp ? "udp" : "tcp"; + + /* initialize socket address structure */ +- bzero(&servaddr, sizeof(servaddr)); +- servaddr.sin_family = AF_INET; ++ bzero(&servaddr4, sizeof(servaddr4)); ++ servaddr4.sin_family = AF_INET; ++ ++ bzero(&servaddr6, sizeof(servaddr6)); ++ servaddr6.sin6_family = AF_INET6; + + /* see if "port" is a service name or number */ + if ( (i = atoi(port)) == 0) { + if ( (sp = getservbyname(port, protocol)) == NULL) +- err_quit("getservbyname() error for: %s/%s", port, protocol); +- +- servaddr.sin_port = sp->s_port; +- } else +- servaddr.sin_port = htons(i); ++ err_quit("getservbyname() error for: %s/%s", ++ port, protocol); ++ servaddr4.sin_port = sp->s_port; ++ servaddr6.sin6_port = sp->s_port; ++ } else { ++ servaddr4.sin_port = htons(i); ++ servaddr6.sin6_port = htons(i); ++ } + + /* +- * First try to convert the host name as a dotted-decimal number. +- * Only if that fails do we call gethostbyname(). ++ * First try to convert the host name as an IPv4 dotted-decimal number ++ * or an IPv6 address. Only if that fails do we try to convert the ++ * host name as a host name string. + */ +- +- if (inet_aton(host, &inaddr) == 1) +- servaddr.sin_addr = inaddr; /* it's dotted-decimal */ +- else if ( (hp = gethostbyname(host)) != NULL) +- bcopy(hp->h_addr, &servaddr.sin_addr, hp->h_length); +- else +- err_quit("invalid hostname: %s", host); ++ if (convert_host_address(host) != 1) { ++ if (convert_host_name(host) != 1) { ++ err_quit("invalid hostname: %s", host); ++ } ++ } + +- if ( (fd = socket(AF_INET, udp ? SOCK_DGRAM : SOCK_STREAM, 0)) < 0) ++ if ( (fd = socket(af_46, udp ? SOCK_DGRAM : SOCK_STREAM, 0)) < 0) + err_sys("socket() error"); + + if (reuseaddr) { +@@ -71,21 +136,46 @@ int cliopen(char *host, char *port) + * (and port) using -l option. Allow localip[] to be set but bindport + * to be 0. + */ +- + if (bindport != 0 || localip[0] != 0 || udp) { +- bzero(&cliaddr, sizeof(cliaddr)); +- cliaddr.sin_family = AF_INET; +- cliaddr.sin_port = htons(bindport); /* can be 0 */ +- if (localip[0] != 0) { +- if (inet_aton(localip, &cliaddr.sin_addr) == 0) +- err_quit("invalid IP address: %s", localip); +- } else +- cliaddr.sin_addr.s_addr = htonl(INADDR_ANY); /* wildcard */ +- +- if (bind(fd, (struct sockaddr *) &cliaddr, sizeof(cliaddr)) < 0) +- err_sys("bind() error"); ++ if (af_46 == AF_INET) { ++ bzero(&cliaddr4, sizeof(cliaddr4)); ++ cliaddr4.sin_family = AF_INET; ++ /* can be 0 */ ++ cliaddr4.sin_port = htons(bindport); ++ if (localip[0] != 0) { ++ if (inet_aton(localip, &cliaddr4.sin_addr) == 0) ++ err_quit("invalid IP address: %s", ++ localip); ++ } else { ++ /* wildcard */ ++ cliaddr4.sin_addr.s_addr = htonl(INADDR_ANY); ++ } ++ if (bind(fd, (struct sockaddr *) &cliaddr4, ++ sizeof(cliaddr4)) < 0) { ++ err_sys("bind() error"); ++ } ++ } else { ++ bzero(&cliaddr6, sizeof(cliaddr6)); ++ cliaddr6.sin6_len = sizeof(struct sockaddr_in6); ++ cliaddr6.sin6_family = AF_INET6; ++ /* can be 0 */ ++ cliaddr6.sin6_port = htons(bindport); ++ ++ /* Fixme: localip not implemented for IPv6 */ ++ cliaddr6.sin6_addr = in6addr_any; ++ ++ /* Fixme: Want to set IPV6_BINDANY? */ ++ ++ if (bind(fd, (struct sockaddr *) &cliaddr6, ++ sizeof(cliaddr6)) < 0) { ++ err_sys("bind() error"); ++ } ++ } + } +- ++ ++ /* Fixme: Does not work */ ++ //join_mcast_client(fd, &cliaddr4, &cliaddr6, &servaddr4, &servaddr6); ++ + /* Need to allocate buffers before connect(), since they can affect + * TCP options (window scale, etc.). + */ +@@ -96,13 +186,21 @@ int cliopen(char *host, char *port) + /* + * Connect to the server. Required for TCP, optional for UDP. + */ +- + if (udp == 0 || connectudp) { + for ( ; ; ) { +- if (connect(fd, (struct sockaddr *) &servaddr, sizeof(servaddr)) +- == 0) ++ if (AF_INET == af_46) { ++ if (connect(fd, (struct sockaddr *) &servaddr4, ++ sizeof(servaddr4)) == 0) + break; /* all OK */ +- if (errno == EINTR) /* can happen with SIGIO */ ++ } else { ++ servaddr6.sin6_len = ++ sizeof(struct sockaddr_in6); ++ servaddr6.sin6_family = AF_INET6; ++ if (connect(fd, (struct sockaddr *) &servaddr6, ++ sizeof(servaddr6)) == 0) ++ break; /* all OK */ ++ } ++ if (errno == EINTR) /* can happen with SIGIO */ + continue; + if (errno == EISCONN) /* can happen with SIGIO */ + break; +@@ -114,16 +212,38 @@ int cliopen(char *host, char *port) + /* Call getsockname() to find local address bound to socket: + TCP ephemeral port was assigned by connect() or bind(); + UDP ephemeral port was assigned by bind(). */ +- i = sizeof(cliaddr); +- if (getsockname(fd, (struct sockaddr *) &cliaddr, &i) < 0) +- err_sys("getsockname() error"); +- +- /* Can't do one fprintf() since inet_ntoa() stores +- the result in a static location. */ +- fprintf(stderr, "connected on %s.%d ", +- INET_NTOA(cliaddr.sin_addr), ntohs(cliaddr.sin_port)); +- fprintf(stderr, "to %s.%d\n", +- INET_NTOA(servaddr.sin_addr), ntohs(servaddr.sin_port)); ++ if (AF_INET == af_46) { ++ socklen = sizeof(cliaddr4); ++ if (getsockname(fd, ++ (struct sockaddr *) &cliaddr4, &socklen) < 0) { ++ err_sys("getsockname() error"); ++ } ++ /* Can't do one fprintf() since inet_ntoa() stores ++ the result in a static location. */ ++ fprintf(stderr, "connected on %s.%d ", ++ INET_NTOA(cliaddr4.sin_addr), ++ ntohs(cliaddr4.sin_port)); ++ fprintf(stderr, "to %s.%d\n", ++ INET_NTOA(servaddr4.sin_addr), ++ ntohs(servaddr4.sin_port)); ++ } else { ++ socklen = sizeof(cliaddr6); ++ if (getsockname(fd, ++ (struct sockaddr *) &cliaddr6, &socklen) < 0) { ++ err_sys("getsockname() error"); ++ } ++ ++ inet_ntop(AF_INET6, ++ &cliaddr6.sin6_addr.__u6_addr.__u6_addr8, ++ inaddr_buf, sizeof(inaddr_buf)); ++ fprintf(stderr, "connected on %s.%d ", ++ inaddr_buf, ntohs(cliaddr6.sin6_port)); ++ inet_ntop(AF_INET6, ++ &servaddr6.sin6_addr.__u6_addr.__u6_addr8, ++ inaddr_buf, sizeof(inaddr_buf)); ++ fprintf(stderr, "to %s.%d\n", ++ inaddr_buf, ntohs(servaddr6.sin6_port)); ++ } + } + + sockopts(fd, 1); /* some options get set after connect() */ Property changes on: head/net/sock/files/patch-src__cliopen.c ___________________________________________________________________ Added: fbsd:nokeywords ## -0,0 +1 ## +yes \ No newline at end of property Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/plain \ No newline at end of property Index: head/net/sock/files/patch-src__loopudp.c =================================================================== --- head/net/sock/files/patch-src__loopudp.c (nonexistent) +++ head/net/sock/files/patch-src__loopudp.c (revision 415801) @@ -0,0 +1,261 @@ +--- src/loopudp.c.orig 2010-05-28 00:03:25 UTC ++++ src/loopudp.c +@@ -21,17 +21,28 @@ + void + loop_udp(int sockfd) + { +- int maxfdp1, nread, ntowrite, stdineof, clilen, servlen, flags; ++ int maxfdp1, nread, ntowrite, stdineof, clilen, flags; ++ socklen_t servlen; + fd_set rset; +- struct sockaddr_in cliaddr; /* for UDP server */ +- struct sockaddr_in servaddr; /* for UDP client */ ++ struct sockaddr_in cliaddr4; /* for IPv4 UDP server */ ++ struct sockaddr_in6 cliaddr6; /* for IPv6 UDP server */ ++ /* ++ * The original local variable servaddr, and later servaddr4 and ++ * servaddr6, were not initialized before use. Using the initialized ++ * global sockaddr structs allows the sendto() code, below, to work ++ * correctly. This was a problem with the original IPv4 code, and ++ * later the IPv6 code. ++ */ ++ //struct sockaddr_in servaddr4; /* for IPv4 UDP client */ ++ //struct sockaddr_in6 servaddr6; /* for IPv6 UDP client */ ++ char inaddr_buf[INET6_ADDRSTRLEN]; + +- struct iovec iov[1]; +- struct msghdr msg; ++ struct iovec iov[1]; ++ struct msghdr msg; + #ifdef HAVE_MSGHDR_MSG_CONTROL + #ifdef IP_RECVDSTADDR /* 4.3BSD Reno and later */ + static struct cmsghdr *cmptr = NULL; /* malloc'ed */ +- struct in_addr dstinaddr; /* for UDP server */ ++ struct in_addr dstinaddr; /* for UDP server */ + #define CONTROLLEN (sizeof(struct cmsghdr) + sizeof(struct in_addr)) + #endif /* IP_RECVDSTADDR */ + +@@ -68,8 +79,10 @@ loop_udp(int sockfd) + err_sys("shutdown() error"); + + FD_CLR(STDIN_FILENO, &rset); +- stdineof = 1; /* don't read stdin anymore */ +- continue; /* back to select() */ ++ /* don't read stdin anymore */ ++ stdineof = 1; ++ /* back to select() */ ++ continue; + } + break; /* default: stdin EOF -> done */ + } +@@ -77,23 +90,43 @@ loop_udp(int sockfd) + if (crlf) { + ntowrite = crlf_add(wbuf, writelen, rbuf, nread); + if (connectudp) { +- if (write(sockfd, wbuf, ntowrite) != ntowrite) ++ if (write(sockfd, wbuf, ntowrite) != ++ ntowrite) { + err_sys("write error"); ++ } + } else { +- if (sendto(sockfd, wbuf, ntowrite, 0, +- (struct sockaddr *) &servaddr, sizeof(servaddr)) +- != ntowrite) +- err_sys("sendto error"); ++ if (af_46 == AF_INET) { ++ if (sendto(sockfd, wbuf, ntowrite, 0, ++ (struct sockaddr *)&servaddr4, ++ sizeof(servaddr4)) != ntowrite) { ++ err_sys("sendto error"); ++ } ++ } else { ++ if (sendto(sockfd, wbuf, ntowrite, 0, ++ (struct sockaddr *)&servaddr6, ++ sizeof(servaddr6)) != ntowrite) { ++ err_sys("sendto error"); ++ } ++ } + } + } else { + if (connectudp) { + if (write(sockfd, rbuf, nread) != nread) + err_sys("write error"); + } else { +- if (sendto(sockfd, rbuf, nread, 0, +- (struct sockaddr *) &servaddr, sizeof(servaddr)) +- != nread) +- err_sys("sendto error"); ++ if (af_46 == AF_INET) { ++ if (sendto(sockfd, rbuf, nread, 0, ++ (struct sockaddr *)&servaddr4, ++ sizeof(servaddr4)) != nread) { ++ err_sys("sendto error"); ++ } ++ } else { ++ if (sendto(sockfd, rbuf, nread, 0, ++ (struct sockaddr *)&servaddr6, ++ sizeof(servaddr6)) != nread) { ++ err_sys("sendto error"); ++ } ++ } + } + } + } +@@ -101,35 +134,54 @@ loop_udp(int sockfd) + if (FD_ISSET(sockfd, &rset)) { + /* data to read from socket */ + if (server) { +- clilen = sizeof(cliaddr); +-#ifndef MSG_TRUNC /* vanilla BSD sockets */ ++ if (af_46 == AF_INET) { ++ clilen = sizeof(cliaddr4); ++ } else { ++ clilen = sizeof(cliaddr6); ++ } ++ ++#ifndef MSG_TRUNC /* vanilla BSD sockets */ ++ ++ /* Fixme: Not ported for IPv6 */ ++ /* Not compiled in for FreeBSD 8.4 */ + nread = recvfrom(sockfd, rbuf, readlen, 0, +- (struct sockaddr *) &cliaddr, &clilen); +- ++ (struct sockaddr *) &cliaddr4, &clilen); ++ + #else /* 4.3BSD Reno and later; use recvmsg() to get at MSG_TRUNC flag */ +- /* Also lets us get at control information (destination address) */ +- ++ /* Also lets us get at control information (destination address) */ ++ ++ /* FreeBSD 8.4 */ + iov[0].iov_base = rbuf; + iov[0].iov_len = readlen; +- msg.msg_iov = iov; +- msg.msg_iovlen = 1; +- msg.msg_name = (caddr_t) &cliaddr; +- msg.msg_namelen = clilen; +- ++ msg.msg_iov = iov; ++ msg.msg_iovlen = 1; ++ if (af_46 == AF_INET) { ++ msg.msg_name = (caddr_t) &cliaddr4; ++ } else { ++ msg.msg_name = (caddr_t) &cliaddr6; ++ } ++ msg.msg_namelen = clilen; ++ + #ifdef HAVE_MSGHDR_MSG_CONTROL + #ifdef IP_RECVDSTADDR ++ /* FreeBSD 8.4 */ + if (cmptr == NULL && (cmptr = malloc(CONTROLLEN)) == NULL) + err_sys("malloc error for control buffer"); + +- msg.msg_control = (caddr_t) cmptr; /* for dest address */ ++ /* for dest address */ ++ msg.msg_control = (caddr_t) cmptr; + msg.msg_controllen = CONTROLLEN; + #else +- msg.msg_control = (caddr_t) 0; /* no ancillary data */ ++ /* Not used for FreeBSD 8.4 */ ++ /* no ancillary data */ ++ msg.msg_control = (caddr_t) 0; + msg.msg_controllen = 0; + #endif /* IP_RECVDSTADDR */ + #endif + #ifdef HAVE_MSGHDR_MSG_FLAGS +- msg.msg_flags = 0; /* flags returned here */ ++ /* FreeBSD 8.4 */ ++ /* flags returned here */ ++ msg.msg_flags = 0; + #endif + nread = recvmsg(sockfd, &msg, 0); + #endif /* MSG_TRUNC */ +@@ -137,22 +189,39 @@ loop_udp(int sockfd) + err_sys("datagram receive error"); + + if (verbose) { +- printf("from %s", INET_NTOA(cliaddr.sin_addr)); ++ if (af_46 == AF_INET) { ++ printf("from %s", ++ INET_NTOA(cliaddr4.sin_addr)); ++ } else { ++ inet_ntop(AF_INET6, ++ &cliaddr6.sin6_addr. ++ __u6_addr.__u6_addr8, ++ inaddr_buf, ++ sizeof(inaddr_buf)); ++ printf("from %s", inaddr_buf); ++ } + #ifdef HAVE_MSGHDR_MSG_CONTROL + #ifdef IP_RECVDSTADDR ++ /* ++ * Fixme: not ported for IPv6 ++ * Fixme: recvdstaddr fails (earlier, ++ * in setsockopt()) for IPv6 under ++ * FreeBSD 8.4 ++ */ + if (recvdstaddr) { + if (cmptr->cmsg_len != CONTROLLEN) + err_quit("control length (%d) != %d", +- cmptr->cmsg_len, CONTROLLEN); ++ cmptr->cmsg_len, CONTROLLEN); + if (cmptr->cmsg_level != IPPROTO_IP) + err_quit("control level != IPPROTO_IP"); + if (cmptr->cmsg_type != IP_RECVDSTADDR) + err_quit("control type != IP_RECVDSTADDR"); + bcopy(CMSG_DATA(cmptr), &dstinaddr, +- sizeof(struct in_addr)); ++ sizeof(struct in_addr)); + bzero(cmptr, CONTROLLEN); + +- printf(", to %s", INET_NTOA(dstinaddr)); ++ printf(", to %s", ++ INET_NTOA(dstinaddr)); + } + #endif /* IP_RECVDSTADDR */ + #endif /* HAVE_MSGHDR_MSG_CONTROL */ +@@ -178,15 +247,37 @@ loop_udp(int sockfd) + } + + } else { +- /* Must use recvfrom() for unconnected UDP client */ +- servlen = sizeof(servaddr); +- nread = recvfrom(sockfd, rbuf, readlen, 0, +- (struct sockaddr *) &servaddr, &servlen); +- if (nread < 0) ++ /* ++ * Must use recvfrom() for unconnected ++ * UDP client ++ */ ++ /* Fixme: not tested on FreeBSD 8.4 */ ++ if (af_46 == AF_INET) { ++ servlen = sizeof(servaddr4); ++ nread = recvfrom(sockfd, rbuf, readlen, ++ 0, (struct sockaddr *)&servaddr4, ++ &servlen); ++ } else { ++ servlen = sizeof(servaddr6); ++ nread = recvfrom(sockfd, rbuf, readlen, ++ 0, (struct sockaddr *)&servaddr6, ++ &servlen); ++ } ++ if (nread < 0) { + err_sys("datagram recvfrom() error"); +- ++ } + if (verbose) { +- printf("from %s", INET_NTOA(servaddr.sin_addr)); ++ if (af_46 == AF_INET) { ++ printf("from %s", ++ INET_NTOA(servaddr4.sin_addr)); ++ } else { ++ inet_ntop(AF_INET6, ++ &servaddr6.sin6_addr. ++ __u6_addr.__u6_addr8, ++ inaddr_buf, ++ sizeof(inaddr_buf)); ++ printf("from %s", inaddr_buf); ++ } + printf(": "); + fflush(stdout); + } Property changes on: head/net/sock/files/patch-src__loopudp.c ___________________________________________________________________ Added: fbsd:nokeywords ## -0,0 +1 ## +yes \ No newline at end of property Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/plain \ No newline at end of property Index: head/net/sock/files/patch-src__main.c =================================================================== --- head/net/sock/files/patch-src__main.c (nonexistent) +++ head/net/sock/files/patch-src__main.c (revision 415801) @@ -0,0 +1,60 @@ +--- src/main.c.orig 2010-05-28 00:03:25 UTC ++++ src/main.c +@@ -23,9 +23,10 @@ + char *host; /* hostname or dotted-decimal string */ + char *port; + +- /* DefinE global variables */ ++ /* Define global variables */ ++int af_46 = AF_INET; /* AF_INET or AF_INET6 */ + int bindport; /* 0 or TCP or UDP port number to bind */ +- /* set by -b or -l options */ ++ /* set by -b or -l options */ + int broadcast; /* SO_BROADCAST */ + int cbreak; /* set terminal to cbreak mode */ + int chunkwrite; /* write in small chunks; not all-at-once */ +@@ -76,7 +77,8 @@ int urgwrite; /* write urgent byte af + int verbose; /* each -v increments this by 1 */ + int usewritev; /* use writev() instead of write() */ + +-struct sockaddr_in cliaddr, servaddr; ++struct sockaddr_in cliaddr4, servaddr4; ++struct sockaddr_in6 cliaddr6, servaddr6; + + static void usage(const char *); + +@@ -90,13 +92,16 @@ main(int argc, char *argv[]) + usage(""); + + opterr = 0; /* don't want getopt() writing to stderr */ +- while ( (c = getopt(argc, argv, "2b:cf:g:hij:kl:n:op:q:r:st:uvw:x:y:ABCDEFG:H:IJ:KL:NO:P:Q:R:S:TU:VWX:YZ")) != -1) { ++ while ( (c = getopt(argc, argv, "26b:cf:g:hij:kl:n:op:q:r:st:uvw:x:y:ABCDEFG:H:IJ:KL:NO:P:Q:R:S:TU:VWX:YZ")) != -1) { + switch (c) { + #ifdef IP_ONESBCAST + case '2': /* use 255.255.255.255 as broadcast address */ + onesbcast = 1; + break; + #endif ++ case '6': /* use IPv6 */ ++ af_46 = AF_INET6; ++ break; + + case 'b': + bindport = atoi(optarg); +@@ -309,7 +314,7 @@ main(int argc, char *argv[]) + } + } + +- /* check for options that don't make sense */ ++ /* check for options that don't make sense */ + if (udp && halfclose) + usage("can't specify -h and -u"); + if (udp && debug) +@@ -439,6 +444,7 @@ usage(const char *msg) + #ifdef IP_ONESBCAST + " -2 IP_ONESBCAST option (255.255.255.255 for broadcast\n" + #endif ++" -6 use IPv6 instead of IPv4\n" + ); + + if (msg[0] != 0) Property changes on: head/net/sock/files/patch-src__main.c ___________________________________________________________________ Added: fbsd:nokeywords ## -0,0 +1 ## +yes \ No newline at end of property Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/plain \ No newline at end of property Index: head/net/sock/files/patch-src__multicast.c =================================================================== --- head/net/sock/files/patch-src__multicast.c (nonexistent) +++ head/net/sock/files/patch-src__multicast.c (revision 415801) @@ -0,0 +1,111 @@ +--- src/multicast.c.orig 2010-05-28 00:03:25 UTC ++++ src/multicast.c +@@ -10,24 +10,96 @@ + + #include "sock.h" + ++/* ++ * Works for IPv4 and IPv6. ++ * For IPv4, the server is able to join a multicast group such as 224.0.0.1. ++ * The client is able to connect to the same multicast address and port ++ * assigned to the server. The client can then send data, which the server ++ * receives. ++ * For IPv6, the server is able to join a multicast group of the form ff02::n. ++ * The client is never able to connect to that address/port, however. ++ */ + void +-join_mcast(int fd, struct sockaddr_in *sin) ++join_mcast_server(int fd, struct sockaddr_in *sin, struct sockaddr_in6 *sin6) + { + #ifdef IP_ADD_MEMBERSHIP /* only include if host supports mcasting */ +- u_long inaddr; +- struct ip_mreq mreq; ++ u_long inaddr; ++ struct ip_mreq mreq; ++ struct ipv6_mreq mreq6; + +- inaddr = sin->sin_addr.s_addr; +- if (IN_MULTICAST(inaddr) == 0) +- return; /* not a multicast address */ ++ if (af_46 == AF_INET) { ++ inaddr = sin->sin_addr.s_addr; ++ /* ++ * FreeBSD 8.4: IN_MULTICAST() test fails in the original code ++ * because it was testing inaddr with the wrong endianness. ++ * Fixed in this version of the code, at least for FreeBSD. ++ */ ++ inaddr = ntohl(inaddr); + +- mreq.imr_multiaddr.s_addr = inaddr; +- mreq.imr_interface.s_addr = htonl(INADDR_ANY); /* need way to change */ +- if (setsockopt(fd, IPPROTO_IP, IP_ADD_MEMBERSHIP, &mreq, +- sizeof(mreq)) == -1 ) +- err_sys("IP_ADD_MEMBERSHIP error"); ++ if (IN_MULTICAST(inaddr) == 0) { ++ return; /* not a multicast address */ ++ } ++ } else { ++ if (IN6_IS_ADDR_MULTICAST(&(sin6->sin6_addr)) == 0) { ++ return; /* not a multicast address */ ++ } ++ } ++ ++ if (af_46 == AF_INET) { ++ mreq.imr_multiaddr.s_addr = sin->sin_addr.s_addr; ++ /* need way to change */ ++ mreq.imr_interface.s_addr = htonl(INADDR_ANY); ++ if (setsockopt(fd, IPPROTO_IP, IP_ADD_MEMBERSHIP, &mreq, ++ sizeof(mreq)) == -1 ) { ++ err_sys("IP_ADD_MEMBERSHIP error"); ++ } ++ } else { ++ memset((char *)&mreq6, 0, sizeof(mreq6)); ++ mreq6.ipv6mr_multiaddr = sin6->sin6_addr; ++ mreq6.ipv6mr_interface = sin6->sin6_scope_id; ++ if (setsockopt(fd, IPPROTO_IPV6, IPV6_JOIN_GROUP, &mreq6, ++ sizeof(mreq6)) == -1 ) { ++ err_sys("IP_ADD_MEMBERSHIP error"); ++ } ++ } + + if (verbose) +- fprintf(stderr, "multicast group joined\n"); ++ fprintf(stderr, "multicast group joined\n"); ++#endif /* IP_ADD_MEMBERSHIP */ ++} ++ ++/* ++ * Added for IPv6. Fixme: Does not work at present. ++ * The client is currently unable to connect to the multicast address/port ++ * which was joined by the server. A function similar to this may be needed ++ * to permit that connection to be made. ++ */ ++void ++join_mcast_client(int fd, ++ struct sockaddr_in *cli_sin, struct sockaddr_in6 *cli_sin6, ++ struct sockaddr_in *serv_sin, struct sockaddr_in6 *serv_sin6) ++{ ++#ifdef IP_ADD_MEMBERSHIP /* only include if host supports mcasting */ ++ struct ipv6_mreq mreq6; ++ ++ if (af_46 == AF_INET6) { ++ if (IN6_IS_ADDR_MULTICAST(&(serv_sin6->sin6_addr)) == 0) { ++ return; /* not a multicast address */ ++ } ++ } ++ ++ if (af_46 == AF_INET6) { ++ memset((char *)&mreq6, 0, sizeof(mreq6)); ++ mreq6.ipv6mr_multiaddr = serv_sin6->sin6_addr; ++ mreq6.ipv6mr_interface = serv_sin6->sin6_scope_id; ++ if (setsockopt(fd, IPPROTO_IPV6, IPV6_JOIN_GROUP, &mreq6, ++ sizeof(mreq6)) == -1 ) { ++ err_sys("IP_ADD_MEMBERSHIP error"); ++ } ++ } ++ ++ if (verbose) { ++ fprintf(stderr, "multicast group joined\n"); ++ } + #endif /* IP_ADD_MEMBERSHIP */ + } Property changes on: head/net/sock/files/patch-src__multicast.c ___________________________________________________________________ Added: fbsd:nokeywords ## -0,0 +1 ## +yes \ No newline at end of property Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/plain \ No newline at end of property Index: head/net/sock/files/patch-src__servopen.c =================================================================== --- head/net/sock/files/patch-src__servopen.c (nonexistent) +++ head/net/sock/files/patch-src__servopen.c (revision 415801) @@ -0,0 +1,282 @@ +--- src/servopen.c.orig 2010-05-28 00:03:25 UTC ++++ src/servopen.c +@@ -19,38 +19,67 @@ + int + servopen(char *host, char *port) + { +- int fd, newfd, i, on, pid; +- char *protocol; ++ int fd, newfd, i, on, pid; ++ char *protocol; + struct in_addr inaddr; + struct servent *sp; ++ socklen_t len; ++ char inaddr_buf[INET6_ADDRSTRLEN]; + + protocol = udp ? "udp" : "tcp"; + +- /* Initialize the socket address structure */ +- bzero(&servaddr, sizeof(servaddr)); +- servaddr.sin_family = AF_INET; ++ /* Initialize the socket address structure */ ++ bzero(&servaddr4, sizeof(servaddr4)); ++ servaddr4.sin_family = AF_INET; + +- /* Caller normally wildcards the local Internet address, meaning +- a connection will be accepted on any connected interface. +- We only allow an IP address for the "host", not a name. */ +- if (host == NULL) +- servaddr.sin_addr.s_addr = htonl(INADDR_ANY); /* wildcard */ +- else { +- if (inet_aton(host, &inaddr) == 0) +- err_quit("invalid host name for server: %s", host); +- servaddr.sin_addr = inaddr; ++ bzero(&servaddr6, sizeof(servaddr6)); ++ servaddr6.sin6_family = AF_INET6; ++ ++ /* ++ * Caller normally wildcards the local Internet address, meaning ++ * a connection will be accepted on any connected interface. ++ * We only allow an IP address for the "host", not a name. ++ */ ++ if (host == NULL) { ++ if (AF_INET == af_46) { ++ /* wildcard */ ++ servaddr4.sin_addr.s_addr = htonl(INADDR_ANY); ++ } else { ++ /* wildcard */ ++ servaddr6.sin6_addr = in6addr_any; ++ } ++ } else { ++ if (AF_INET == af_46) { ++ if (inet_pton(AF_INET, host, &inaddr) == 0) { ++ err_quit("invalid host name for server: %s", ++ host); ++ } ++ /* IPv4 address */ ++ servaddr4.sin_addr = inaddr; ++ } else { ++ if (inet_pton(AF_INET6, host, inaddr_buf) == 0) { ++ err_quit("invalid host name for server: %s", ++ host); ++ } ++ /* IPv6 address */ ++ memcpy(&servaddr6.sin6_addr, inaddr_buf, ++ sizeof(struct in6_addr)); ++ } + } + +- /* See if "port" is a service name or number */ ++ /* See if "port" is a service name or number */ + if ( (i = atoi(port)) == 0) { + if ( (sp = getservbyname(port, protocol)) == NULL) +- err_ret("getservbyname() error for: %s/%s", port, protocol); +- +- servaddr.sin_port = sp->s_port; +- } else +- servaddr.sin_port = htons(i); ++ err_ret("getservbyname() error for: %s/%s", port, ++ protocol); ++ servaddr4.sin_port = sp->s_port; ++ servaddr6.sin6_port = sp->s_port; ++ } else { ++ servaddr4.sin_port = htons(i); ++ servaddr6.sin6_port = htons(i); ++ } + +- if ( (fd = socket(AF_INET, udp ? SOCK_DGRAM : SOCK_STREAM, 0)) < 0) ++ if ( (fd = socket(af_46, udp ? SOCK_DGRAM : SOCK_STREAM, 0)) < 0) + err_sys("socket() error"); + + if (reuseaddr) { +@@ -67,28 +96,37 @@ servopen(char *host, char *port) + } + #endif + +- /* Bind our well-known port so the client can connect to us. */ +- if (bind(fd, (struct sockaddr *) &servaddr, sizeof(servaddr)) < 0) +- err_sys("can't bind local address"); ++ /* Bind our well-known port so the client can connect to us. */ ++ if (AF_INET == af_46) { ++ if (bind(fd, (struct sockaddr *) &servaddr4, ++ sizeof(servaddr4)) < 0) { ++ err_sys("can't bind local address"); ++ } ++ } else { ++ if (bind(fd, (struct sockaddr *) &servaddr6, ++ sizeof(servaddr6)) < 0) { ++ err_sys("can't bind local address"); ++ } ++ } + +- join_mcast(fd, &servaddr); ++ join_mcast_server(fd, &servaddr4, &servaddr6); + + if (udp) { + buffers(fd); + +- if (foreignip[0] != 0) { /* connect to foreignip/port# */ +- bzero(&cliaddr, sizeof(cliaddr)); +- if (inet_aton(foreignip, &cliaddr.sin_addr) == 0) ++ /* Fixme: Not ported for IPv6 */ ++ if (foreignip[0] != 0) { /* connect to foreignip/port# */ ++ bzero(&cliaddr4, sizeof(cliaddr4)); ++ if (inet_aton(foreignip, &cliaddr4.sin_addr) == 0) + err_quit("invalid IP address: %s", foreignip); +- cliaddr.sin_family = AF_INET; +- cliaddr.sin_port = htons(foreignport); +- /* connect() for datagram socket doesn't appear to allow +- wildcarding of either IP address or port number */ ++ cliaddr4.sin_family = AF_INET; ++ cliaddr4.sin_port = htons(foreignport); ++ /* connect() for datagram socket doesn't appear to allow ++ wildcarding of either IP address or port number */ + +- if (connect(fd, (struct sockaddr *) &cliaddr, sizeof(cliaddr)) +- < 0) ++ if (connect(fd, (struct sockaddr *) &cliaddr4, ++ sizeof(cliaddr4)) < 0) + err_sys("connect() error"); +- + } + + sockopts(fd, 1); +@@ -96,58 +134,108 @@ servopen(char *host, char *port) + return(fd); /* nothing else to do */ + } + +- buffers(fd); /* may set receive buffer size; must do here to get +- correct window advertised on SYN */ ++ buffers(fd); /* may set receive buffer size; must do here to ++ get correct window advertised on SYN */ + sockopts(fd, 0); /* only set some socket options for fd */ + + listen(fd, listenq); + +- if (pauselisten) +- sleep_us(pauselisten*1000); /* lets connection queue build up */ ++ if (pauselisten) { ++ /* lets connection queue build up */ ++ sleep_us(pauselisten*1000); ++ } + +- if (dofork) +- TELL_WAIT(); /* initialize synchronization primitives */ ++ if (dofork) { ++ /* initialize synchronization primitives */ ++ TELL_WAIT(); ++ } + + for ( ; ; ) { +- i = sizeof(cliaddr); +- if ( (newfd = accept(fd, (struct sockaddr *) &cliaddr, &i)) < 0) +- err_sys("accept() error"); ++ if (AF_INET == af_46) { ++ len = sizeof(cliaddr4); ++ if ( (newfd = accept(fd, (struct sockaddr *) &cliaddr4, ++ &len)) < 0) { ++ err_sys("accept() error"); ++ } ++ } else { ++ len = sizeof(cliaddr6); ++ if ( (newfd = accept(fd, (struct sockaddr *) &cliaddr6, ++ &len)) < 0) { ++ err_sys("accept() error"); ++ } ++ } + + if (dofork) { + if ( (pid = fork()) < 0) + err_sys("fork error"); + + if (pid > 0) { +- close(newfd); /* parent closes connected socket */ +- WAIT_CHILD(); /* wait for child to output to terminal */ +- continue; /* and back to for(;;) for another accept() */ ++ /* parent closes connected socket */ ++ close(newfd); ++ /* wait for child to output to terminal */ ++ WAIT_CHILD(); ++ /* and back to for(;;) for another accept() */ ++ continue; + } else { +- close(fd); /* child closes listening socket */ ++ /* child closes listening socket */ ++ close(fd); + } + } + +- /* child (or iterative server) continues here */ ++ /* child (or iterative server) continues here */ + if (verbose) { +- /* Call getsockname() to find local address bound to socket: +- local internet address is now determined (if multihomed). */ +- i = sizeof(servaddr); +- if (getsockname(newfd, (struct sockaddr *) &servaddr, &i) < 0) +- err_sys("getsockname() error"); ++ /* ++ * Call getsockname() to find local address bound ++ * to socket: local internet address is now ++ * determined (if multihomed). ++ */ ++ if (AF_INET == af_46) { ++ len = sizeof(servaddr4); ++ if (getsockname(newfd, ++ (struct sockaddr *)&servaddr4, &len) < 0) { ++ err_sys("getsockname() error"); ++ } + +- /* Can't do one fprintf() since inet_ntoa() stores +- the result in a static location. */ +- fprintf(stderr, "connection on %s.%d ", +- INET_NTOA(servaddr.sin_addr), ntohs(servaddr.sin_port)); +- fprintf(stderr, "from %s.%d\n", +- INET_NTOA(cliaddr.sin_addr), ntohs(cliaddr.sin_port)); ++ /* ++ * Can't do one fprintf() since inet_ntoa() ++ * stores the result in a static location. ++ */ ++ fprintf(stderr, "connection on %s.%d ", ++ INET_NTOA(servaddr4.sin_addr), ++ ntohs(servaddr4.sin_port)); ++ fprintf(stderr, "from %s.%d\n", ++ INET_NTOA(cliaddr4.sin_addr), ++ ntohs(cliaddr4.sin_port)); ++ } else { ++ len = sizeof(servaddr6); ++ if (getsockname(newfd, ++ (struct sockaddr *)&servaddr6, &len) < 0) { ++ err_sys("getsockname() error"); ++ } ++ inet_ntop(AF_INET6, ++ &servaddr6.sin6_addr.__u6_addr.__u6_addr8, ++ inaddr_buf, sizeof(inaddr_buf)); ++ fprintf(stderr, "connection on %s.%d ", ++ inaddr_buf, ntohs(servaddr6.sin6_port)); ++ inet_ntop(AF_INET6, ++ &cliaddr6.sin6_addr.__u6_addr.__u6_addr8, ++ inaddr_buf, sizeof(inaddr_buf)); ++ fprintf(stderr, "from %s.%d\n", ++ inaddr_buf, ntohs(cliaddr6.sin6_port)); ++ } + } + +- buffers(newfd); /* setsockopt() again, in case it didn't propagate +- from listening socket to connected socket */ +- sockopts(newfd, 1); /* can set all socket options for this socket */ ++ /* setsockopt() again, in case it didn't propagate ++ from listening socket to connected socket */ ++ buffers(newfd); + +- if (dofork) +- TELL_PARENT(getppid()); /* tell parent we're done with terminal */ ++ /* can set all socket options for this socket */ ++ sockopts(newfd, 1); ++ ++ if (dofork) { ++ /* tell parent we're done with terminal */ ++ TELL_PARENT(getppid()); ++ } + + return(newfd); + } Property changes on: head/net/sock/files/patch-src__servopen.c ___________________________________________________________________ Added: fbsd:nokeywords ## -0,0 +1 ## +yes \ No newline at end of property Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/plain \ No newline at end of property Index: head/net/sock/files/patch-src__sock.h =================================================================== --- head/net/sock/files/patch-src__sock.h (nonexistent) +++ head/net/sock/files/patch-src__sock.h (revision 415801) @@ -0,0 +1,30 @@ +--- src/sock.h.orig 2010-05-28 00:03:25 UTC ++++ src/sock.h +@@ -62,6 +62,7 @@ extern int errno; + #define max(a,b) ((a) > (b) ? (a) : (b)) + + /* declare global variables */ ++extern int af_46; + extern int bindport; + extern int broadcast; + extern int cbreak; +@@ -114,6 +115,8 @@ extern int verbose; + extern int usewritev; + + extern struct sockaddr_in cliaddr, servaddr; ++extern struct sockaddr_in cliaddr4, servaddr4; ++extern struct sockaddr_in6 cliaddr6, servaddr6; + + /* Earlier versions of gcc under SunOS 4.x have problems passing arguments + that are structs (as opposed to pointers to structs). This shows up +@@ -130,7 +133,9 @@ void buffers(int); + int cliopen(char *, char *); + int crlf_add(char *, int, const char *, int); + int crlf_strip(char *, int, const char *, int); +-void join_mcast(int, struct sockaddr_in *); ++void join_mcast_server(int, struct sockaddr_in *, struct sockaddr_in6 *); ++void join_mcast_client(int, struct sockaddr_in *, struct sockaddr_in6 *, ++ struct sockaddr_in *, struct sockaddr_in6 *); + void loop_tcp(int); + void loop_udp(int); + void pattern(char *, int); Property changes on: head/net/sock/files/patch-src__sock.h ___________________________________________________________________ Added: fbsd:nokeywords ## -0,0 +1 ## +yes \ No newline at end of property Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/plain \ No newline at end of property Index: head/net/sock/files/patch-src__sockopts.c =================================================================== --- head/net/sock/files/patch-src__sockopts.c (nonexistent) +++ head/net/sock/files/patch-src__sockopts.c (revision 415801) @@ -0,0 +1,122 @@ +--- src/sockopts.c.orig 2010-05-28 00:03:25 UTC ++++ src/sockopts.c +@@ -30,6 +30,13 @@ sockopts(int sockfd, int doall) + unsigned optlen; + struct linger ling; + struct timeval timer; ++ int level; ++ ++ if (AF_INET == af_46) { ++ level = IPPROTO_IP; ++ } else { ++ level = IPPROTO_IPV6; ++ } + + /* "doall" is 0 for a server's listening socket (i.e., before + accept() has returned.) Some socket options such as SO_KEEPALIVE +@@ -73,13 +80,13 @@ sockopts(int sockfd, int doall) + + #ifdef IP_TOS + if (iptos != -1 && doall == 0) { +- if (setsockopt(sockfd, IPPROTO_IP, IP_TOS, ++ if (setsockopt(sockfd, level, IP_TOS, + &iptos, sizeof(iptos)) < 0) + err_sys("IP_TOS setsockopt error"); + + option = 0; + optlen = sizeof(option); +- if (getsockopt(sockfd, IPPROTO_IP, IP_TOS, ++ if (getsockopt(sockfd, level, IP_TOS, + &option, &optlen) < 0) + err_sys("IP_TOS getsockopt error"); + if (option != iptos) +@@ -92,13 +99,13 @@ sockopts(int sockfd, int doall) + + #ifdef IP_TTL + if (ipttl != -1 && doall == 0) { +- if (setsockopt(sockfd, IPPROTO_IP, IP_TTL, ++ if (setsockopt(sockfd, level, IP_TTL, + &ipttl, sizeof(ipttl)) < 0) + err_sys("IP_TTL setsockopt error"); + + option = 0; + optlen = sizeof(option); +- if (getsockopt(sockfd, IPPROTO_IP, IP_TTL, ++ if (getsockopt(sockfd, level, IP_TTL, + &option, &optlen) < 0) + err_sys("IP_TTL getsockopt error"); + if (option != ipttl) +@@ -150,13 +157,13 @@ sockopts(int sockfd, int doall) + #ifdef IP_ONESBCAST + if (onesbcast) { + option = 1; +- if (setsockopt(sockfd, IPPROTO_IP, IP_ONESBCAST, ++ if (setsockopt(sockfd, level, IP_ONESBCAST, + &option, sizeof(option)) < 0) + err_sys("IP_ONESBCAST setsockopt error"); + + option = 0; + optlen = sizeof(option); +- if (getsockopt(sockfd, IPPROTO_IP, IP_ONESBCAST, ++ if (getsockopt(sockfd, level, IP_ONESBCAST, + &option, &optlen) < 0) + err_sys("IP_ONESBCAST getsockopt error"); + if (option == 0) +@@ -175,7 +182,7 @@ sockopts(int sockfd, int doall) + if (inet_aton(joinip, &join.imr_multiaddr) == 0) + err_quit("invalid multicast address: %s", joinip); + join.imr_interface.s_addr = htonl(INADDR_ANY); +- if (setsockopt(sockfd, IPPROTO_IP, IP_ADD_MEMBERSHIP, ++ if (setsockopt(sockfd, level, IP_ADD_MEMBERSHIP, + &join, sizeof(join)) < 0) + err_sys("IP_ADD_MEMBERSHIP setsockopt error"); + +@@ -188,12 +195,12 @@ sockopts(int sockfd, int doall) + if (mcastttl) { + u_char ttl = mcastttl; + +- if (setsockopt(sockfd, IPPROTO_IP, IP_MULTICAST_TTL, ++ if (setsockopt(sockfd, level, IP_MULTICAST_TTL, + &ttl, sizeof(ttl)) < 0) + err_sys("IP_MULTICAST_TTL setsockopt error"); + + optlen = sizeof(ttl); +- if (getsockopt(sockfd, IPPROTO_IP, IP_MULTICAST_TTL, ++ if (getsockopt(sockfd, level, IP_MULTICAST_TTL, + &ttl, &optlen) < 0) + err_sys("IP_MULTICAST_TTL getsockopt error"); + if (ttl != mcastttl) +@@ -288,7 +295,7 @@ sockopts(int sockfd, int doall) + + if (verbose) + fprintf(stderr, "SO_RCVTIMEO: %ld.%06ld\n", +- timer.tv_sec, timer.tv_usec); ++ (long)timer.tv_sec, timer.tv_usec); + #else + fprintf(stderr, "warning: SO_RCVTIMEO not supported by host\n"); + #endif +@@ -311,7 +318,7 @@ sockopts(int sockfd, int doall) + + if (verbose) + fprintf(stderr, "SO_SNDTIMEO: %ld.%06ld\n", +- timer.tv_sec, timer.tv_usec); ++ (long)timer.tv_sec, timer.tv_usec); + #else + fprintf(stderr, "warning: SO_SNDTIMEO not supported by host\n"); + #endif +@@ -320,13 +327,13 @@ sockopts(int sockfd, int doall) + if (recvdstaddr && udp) { + #ifdef IP_RECVDSTADDR + option = 1; +- if (setsockopt(sockfd, IPPROTO_IP, IP_RECVDSTADDR, ++ if (setsockopt(sockfd, level, IP_RECVDSTADDR, + &option, sizeof(option)) < 0) + err_sys("IP_RECVDSTADDR setsockopt error"); + + option = 0; + optlen = sizeof(option); +- if (getsockopt(sockfd, IPPROTO_IP, IP_RECVDSTADDR, ++ if (getsockopt(sockfd, level, IP_RECVDSTADDR, + &option, &optlen) < 0) + err_sys("IP_RECVDSTADDR getsockopt error"); + if (option == 0) Property changes on: head/net/sock/files/patch-src__sockopts.c ___________________________________________________________________ Added: fbsd:nokeywords ## -0,0 +1 ## +yes \ No newline at end of property Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/plain \ No newline at end of property Index: head/net/sock/files/patch-src__sourceroute.c =================================================================== --- head/net/sock/files/patch-src__sourceroute.c (nonexistent) +++ head/net/sock/files/patch-src__sourceroute.c (revision 415801) @@ -0,0 +1,16 @@ +--- src/sourceroute.c.orig 2010-05-28 00:03:25 UTC ++++ src/sourceroute.c +@@ -88,10 +88,11 @@ sroute_set(int sockfd) + sroute_opt[1] = 3 + (sroute_cnt * 4); /* total length, incl. destination */ + + /* destination must be stored as final entry */ +- bcopy(&servaddr.sin_addr, optr, sizeof(u_long)); ++ bcopy(&servaddr4.sin_addr, optr, sizeof(u_long)); + optr += sizeof(u_long); + if (verbose) { +- fprintf(stderr, "source route to %s\n", inet_ntoa(servaddr.sin_addr)); ++ fprintf(stderr, "source route to %s\n", ++ inet_ntoa(servaddr4.sin_addr)); + fprintf(stderr, "source route size %d bytes\n", sroute_opt[1]); + } + Property changes on: head/net/sock/files/patch-src__sourceroute.c ___________________________________________________________________ Added: fbsd:nokeywords ## -0,0 +1 ## +yes \ No newline at end of property Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/plain \ No newline at end of property Index: head/net/sock/files/patch-src__sourceudp.c =================================================================== --- head/net/sock/files/patch-src__sourceudp.c (nonexistent) +++ head/net/sock/files/patch-src__sourceudp.c (revision 415801) @@ -0,0 +1,62 @@ +--- src/sourceudp.c.orig 2010-05-28 00:03:25 UTC ++++ src/sourceudp.c +@@ -29,28 +29,41 @@ source_udp(int sockfd) /* TODO: use send + if (connectudp) { + if ( (n = write(sockfd, wbuf, writelen)) != writelen) { + if (ignorewerr) { +- err_ret("write returned %d, expected %d", n, writelen); +- /* also call getsockopt() to clear so_error */ ++ err_ret("write returned %d, expected %d", ++ n, writelen); ++ /* also call getsockopt() to clear so_error */ + optlen = sizeof(option); +- if (getsockopt(sockfd, SOL_SOCKET, SO_ERROR, +- &option, &optlen) < 0) +- err_sys("SO_ERROR getsockopt error"); +- } else +- err_sys("write returned %d, expected %d", n, writelen); ++ if (getsockopt(sockfd, SOL_SOCKET, ++ SO_ERROR, &option, &optlen) < 0) ++ err_sys("SO_ERROR getsockopt error"); ++ } else { ++ err_sys("write returned %d, expected %d", ++ n, writelen); ++ } + } + } else { +- if ( (n = sendto(sockfd, wbuf, writelen, 0, +- (struct sockaddr *) &servaddr, +- sizeof(struct sockaddr))) != writelen) { +- if (ignorewerr) { +- err_ret("sendto returned %d, expected %d", n, writelen); +- /* also call getsockopt() to clear so_error */ ++ if (af_46 == AF_INET) { ++ n = sendto(sockfd, wbuf, writelen, 0, ++ (struct sockaddr *) &servaddr4, ++ sizeof(servaddr4)); ++ } else { ++ n = sendto(sockfd, wbuf, writelen, 0, ++ (struct sockaddr *) &servaddr6, ++ sizeof(servaddr6)); ++ } ++ if (n != writelen) { ++ if (ignorewerr) { ++ err_ret("sendto returned %d, expected %d", ++ n, writelen); ++ /* also call getsockopt() to clear so_error */ + optlen = sizeof(option); +- if (getsockopt(sockfd, SOL_SOCKET, SO_ERROR, +- &option, &optlen) < 0) +- err_sys("SO_ERROR getsockopt error"); +- } else +- err_sys("sendto returned %d, expected %d", n, writelen); ++ if (getsockopt(sockfd, SOL_SOCKET, ++ SO_ERROR, &option, &optlen) < 0) ++ err_sys("SO_ERROR getsockopt error"); ++ } else { ++ err_sys("sendto returned %d, expected %d", ++ n, writelen); ++ } + } + } + Property changes on: head/net/sock/files/patch-src__sourceudp.c ___________________________________________________________________ Added: fbsd:nokeywords ## -0,0 +1 ## +yes \ No newline at end of property Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/plain \ No newline at end of property Index: head/net/sock/pkg-descr =================================================================== --- head/net/sock/pkg-descr (nonexistent) +++ head/net/sock/pkg-descr (revision 415801) @@ -0,0 +1,17 @@ +This is a standalone version of W. Richard Stevens' "sock" program, +based on the code available for the UNIX Network Programming book. + +Adapted and reworked code for W. Richard Stevens' "sock" utility +by Christian Kreibich. + +From the author: In TCP/IP Illustrated Vol. 1, Richard Stevens used +a program called "sock" to demonstrate the many properties of TCP/IP. +Unfortunately, the book only speaks about how to use the program but +does not point to a site for downloading its sources. While sock is +contained in the code package accompanying UNIX Network Programming, +this code is also getting dated. + +The program can be used to generate TCP or UDP packets for testing +various network features. It runs as either client or server. + +WWW: http://www.icir.org/christian/sock.html Property changes on: head/net/sock/pkg-descr ___________________________________________________________________ Added: fbsd:nokeywords ## -0,0 +1 ## +yes \ No newline at end of property Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/plain \ No newline at end of property