OpenBSD src changes summary for 2015-12-05
==========================================

bin/ksh                                 distrib/sets
etc/Makefile                            etc/mtree/special
etc/netstart                            etc/rc
etc/rc.conf                             etc/rc.d/rc.subr
etc/rc.d/vmd                            games/hack
gnu/usr.bin/binutils-2.17               lib/libutil
libexec/spamd                           regress/sys
sbin/dhclient                           sbin/iked
share/man                               share/termtypes
sys/arch/amd64/amd64                    sys/arch/sparc64/dev
sys/dev/ic                              sys/dev/pci
sys/kern                                sys/net
sys/net80211                            sys/netinet
sys/netinet6                            usr.bin/file
usr.bin/ftp                             usr.bin/make
usr.bin/mg                              usr.bin/ssh
usr.bin/tmux                            usr.bin/unifdef
usr.sbin/amd                            usr.sbin/bgpctl
usr.sbin/bgpd                           usr.sbin/dvmrpctl
usr.sbin/dvmrpd                         usr.sbin/eigrpctl
usr.sbin/eigrpd                         usr.sbin/httpd
usr.sbin/ikectl                         usr.sbin/iscsid
usr.sbin/ldapctl                        usr.sbin/ldapd
usr.sbin/ldpctl                         usr.sbin/ldpd
usr.sbin/npppctl                        usr.sbin/npppd
usr.sbin/ntpd                           usr.sbin/ospf6ctl
usr.sbin/ospf6d                         usr.sbin/ospfd
usr.sbin/radiusd                        usr.sbin/rebound
usr.sbin/relayctl                       usr.sbin/relayd
usr.sbin/ripctl                         usr.sbin/ripd
usr.sbin/smtpd                          usr.sbin/snmpctl
usr.sbin/snmpd                          usr.sbin/tcpdump
usr.sbin/vmctl                          usr.sbin/vmd
usr.sbin/ypldap                         

== bin =============================================================== 01/13 ==

  http://cvsweb.openbsd.org/cgi-bin/cvsweb/src/bin

ksh

  ~ README                                

  > Remove some bug report guidelines from pdksh that aren't relevant to us.
  > (mmcc@)

  ~ README                                

  > Remove needless reference to LEGAL, which is likely outdated itself.
  > (mmcc@)

  ~ README                                

  > Remove descriptions of files that no longer exist. (mmcc@)

  ~ README                                

  > Remove some more pdksh-specific stuff and references to files that no
  > longer exist. (mmcc@)

== distrib =========================================================== 02/13 ==

  http://cvsweb.openbsd.org/cgi-bin/cvsweb/src/distrib

sets

  ~ lists/base/mi                         

  > sync (deraadt@)

== etc =============================================================== 03/13 ==

  http://cvsweb.openbsd.org/cgi-bin/cvsweb/src/etc

Makefile

  ~ Makefile                              

  > add rcscript for vmd
  > ok mlarkin@
  > prompted by deraadt@ (jasper@)

mtree/special

  ~ mtree/special                         

  > remove doas.conf since the permission check is too onerous.
  > the doas program itself will refuse to use an insecure config file.
  > (changelist will continue to watch for changes, as well.) (tedu@)

netstart

  ~ netstart                              

  > It does not make sense to insert a specific route for 224/4 when the
  > default one is good enough.
  > So merge rc.conf(8)'s 'multicast_router' and 'multicast_host' into a
  > single 'multicast'.  If set to YES the reject route for 224/4 is not
  > inserted by netstart(8).
  > Manual bits from jmc@
  > ok henning@, ajacoutot@ (mpi@)

rc

  ~ rc                                    

  > add rcscript for vmd
  > ok mlarkin@
  > prompted by deraadt@ (jasper@)

rc.conf

  ~ rc.conf                               

  > add rcscript for vmd
  > ok mlarkin@
  > prompted by deraadt@ (jasper@)

  ~ rc.conf                               

  > It does not make sense to insert a specific route for 224/4 when the
  > default one is good enough.
  > So merge rc.conf(8)'s 'multicast_router' and 'multicast_host' into a
  > single 'multicast'.  If set to YES the reject route for 224/4 is not
  > inserted by netstart(8).
  > Manual bits from jmc@
  > ok henning@, ajacoutot@ (mpi@)

rc.d/rc.subr

  ~ rc.d/rc.subr                          

  > It does not make sense to insert a specific route for 224/4 when the
  > default one is good enough.
  > So merge rc.conf(8)'s 'multicast_router' and 'multicast_host' into a
  > single 'multicast'.  If set to YES the reject route for 224/4 is not
  > inserted by netstart(8).
  > Manual bits from jmc@
  > ok henning@, ajacoutot@ (mpi@)

rc.d/vmd

  + rc.d/vmd                              

  > add rcscript for vmd
  > ok mlarkin@
  > prompted by deraadt@ (jasper@)

== games ============================================================= 04/13 ==

  http://cvsweb.openbsd.org/cgi-bin/cvsweb/src/games

hack

  ~ hack.ioctl.c                          

  > add missing #include "hack.h" (tb@)

== gnu =============================================================== 05/13 ==

  http://cvsweb.openbsd.org/cgi-bin/cvsweb/src/gnu

usr.bin/binutils-2.17

  ~ gas/config/tc-arm.c                   

  > Implement the .inst assembler directive for arm.
  > Required for building gcc 4.9
  > ok jsg@ (tobiasu@)

== lib =============================================================== 06/13 ==

  http://cvsweb.openbsd.org/cgi-bin/cvsweb/src/lib

libutil

  ~ imsg.c                                ~ imsg_init.3

  > Do not loop on EAGAIN in imsg_read(). Better to return the error to the
  > caller and let him do another poll loop. This fixes spinning relayd
  > processes seen on busy TLS relays. OK benno@ henning@ (claudio@)

== libexec =========================================================== 07/13 ==

  http://cvsweb.openbsd.org/cgi-bin/cvsweb/src/libexec

spamd

  ~ spamd.c                               

  > adjust to newer tls_read/_write semantics.
  > quite involved, due to tls_read potentially needing to write and tls_write
  > potentially needing to read (in the reneg case); that not fitting the spamd
  > model too well - it needs to keep a little more state.
  > help & ok bluhm & beck (henning@)

== regress =========================================================== 08/13 ==

  http://cvsweb.openbsd.org/cgi-bin/cvsweb/src/regress

sys

  ~ kern/kqueue/Makefile                  ~ kern/kqueue/main.c
  + kern/kqueue/kqueue-timer.c            

  > simplistic regress test for KEVENT_TIMER kqueue(2) calls
  > ok and prodding tedu@ (blambert@)

== sbin ============================================================== 09/13 ==

  http://cvsweb.openbsd.org/cgi-bin/cvsweb/src/sbin

dhclient

  ~ dhclient.c                            

  > EAGAIN handling for imsg_read. OK henning@ benno@ (claudio@)

iked

  ~ control.c                             ~ proc.c

  > EAGAIN handling for imsg_read. OK henning@ benno@ (claudio@)

== share ============================================================= 10/13 ==

  http://cvsweb.openbsd.org/cgi-bin/cvsweb/src/share

man

  ~ man8/netstart.8                       

  > It does not make sense to insert a specific route for 224/4 when the
  > default one is good enough.
  > So merge rc.conf(8)'s 'multicast_router' and 'multicast_host' into a
  > single 'multicast'.  If set to YES the reject route for 224/4 is not
  > inserted by netstart(8).
  > Manual bits from jmc@
  > ok henning@, ajacoutot@ (mpi@)

  ~ man4/virtio.4                         

  > document that virtio supports the 0.9.5 spec, not 1.0 (sf@)

  ~ man8/rc.conf.8                        

  > multicast_{host,router} is now just multicast; (jmc@)

termtypes

  ~ termtypes.master                      

  > Update termtypes.master to upstream terminfo-20151128. (nicm@)

== sys =============================================================== 11/13 ==

  http://cvsweb.openbsd.org/cgi-bin/cvsweb/src/sys

arch/amd64/amd64

  ~ identcpu.c                            

  > AMD Family 12h and later processors keep their APIC clock running in deeper
  > C-states.  Set the TMP_ARAT flag for these (which is Intel-specific) such
  > that acpicpu(4) enables the deeper C-states on these CPUs.
  > ok deraadt@ (kettenis@)

arch/sparc64/dev

  ~ vnet.c                                

  > Avoid using ifq_deq_rollback(). (kettenis@)

dev/ic

  ~ rt2560.c                              

  > ifq_deq_rollback without a preceding ifq_deq_begin is fail.
  > caused by a badly managed merge.
  > found by and testing by sebastia@
  > ok mpi@ (dlg@)

dev/pci

  ~ if_bnx.c                              ~ if_bnxreg.h

  > Make the bnx interrupt handler mpsafe, and perform rx and tx completion
  > outside the kernel lock.
  > Remove tx descriptor lists (essentially backing out if_bnx.c r1.77),
  > add an interrupt barrier in bnx_stop, check the rx ring state before
  > receiving
  > packets, adjust the tx counter with atomic operations, and rework bnx_start
  > to check for ring space before dequeueing and drop the packet if bnx_encap
  > fails.
  > tested on BCM5708 by me and on BCM5709 by Hrvoje Popovski
  > ok dlg@ (jmatthew@)

  ~ virtio.c                              ~ virtiovar.h

  > Make virtio_enqueue_commit return void
  > The return value was unused (sf@)

  ~ vioblk.c                              

  > make vioblk_scsi_cmd more normal
  > Declare all variables at the start of the function and get rid of the
  > strangely-indented block around the second half of the function. (sf@)

  ~ vioblk.c                              

  > vioblk: Don't send flush ops if flush feature not present
  > If we haven't negotiated the flush feature, don't send
  > VIRTIO_BLK_T_FLUSH to the device.
  > noticed by mlarkin@ (sf@)

kern

  ~ kern_acct.c                           ~ kern_descrip.c
  ~ kern_event.c                          ~ kern_exec.c
  ~ kern_ktrace.c                         ~ kern_resource.c
  ~ kern_sig.c                            ~ kern_time.c
  ~ kern_xxx.c                            ~ spec_vnops.c
  ~ subr_log.c                            ~ subr_prof.c
  ~ subr_xxx.c                            ~ sys_generic.c
  ~ sys_pipe.c                            ~ sys_socket.c
  ~ tty.c                                 ~ tty_pty.c
  ~ tty_tty.c                             ~ uipc_socket.c
  ~ uipc_syscalls.c                       ~ uipc_usrreq.c
  ~ vfs_subr.c                            ~ vfs_syscalls.c

  > remove stale lint annotations (tedu@)

  ~ kern_pledge.c                         

  > Study of kernel code complete. Permit ioctl SIOCGIFMEDIA for pledge
  > "route", which krw and mestre will be able to use in dhclient(8).
  > (deraadt@)

  ~ kern_sysctl.c                         

  > Make sure we use the same cpu numbering for the kern.cptime2 sysctl as we
  > do for kern.proc.  Fixes the issue in top(1) where a cpu would seem to be
  > idle
  > even though a thread was reported to be running on it.
  > ok mpi@, tedu@, deraadt@ (kettenis@)

net

  ~ bpf.c                                 ~ if.c
  ~ if_bridge.c                           ~ if_gif.c
  ~ if_loop.c                             ~ if_mpe.c
  ~ if_mpw.c                              ~ if_pair.c
  ~ if_pflog.c                            ~ if_pfsync.c
  ~ if_pppoe.c                            ~ if_vether.c
  ~ if_vlan.c                             ~ if_vxlan.c
  ~ netisr.c                              ~ ppp_tty.c
  ~ raw_usrreq.c                          ~ route.c

  > remove old lint annotations (tedu@)

  ~ pf.c                                  

  > pass a pointer to pf_test()'s reason to pf_test_rule instead of using a
  > local one. While we always intended to keep the logging in pf_test_rule
  > and pf_test so seperate that we don't end up with a wrong reason, this
  > is just too fragile and I can't even convince myself that it still is
  > right. pointed out by markus, ok bluhm benno (henning@)

  ~ if_pppx.c                             ~ if_tun.c
  ~ pipex.h                               

  > Make pppx pass packets with npppd through the device.  This makes pppx work
  > without pipex.enable=1.  Also fix tun(4) not to pass the packets to pipex
  > when pipex.enable=0.
  > "go for it" dlg (yasuoka@)

  ~ if_var.h                              

  > Keep kernel definitions under _KERNEL to unbreak ports that include
  > <net/if_var.h> because some other operating systems have defines in
  > there.
  > ok jasper@ (mpi@)

  ~ if.h                                  

  > avoid an ugly wrap in a comment (deraadt@)

  ~ pf.c                                  

  > g/c unneeded af (address family) params to pf_change_ap and _icmp
  > both af and naf (af-to case) are in the pf_pdesc
  > some code shuffling to actually set these before calling pf_change_ap/_icmp
  > inspired by Richard Procter <[email protected]>'s mail on tech
  > from Aug 17, but redone
  > ok bluhm vgross (henning@)

  ~ if_etherip.c                          ~ if_etherip.h

  > Multiple cleanups.
  > ok goda@, yasuoka@ (mpi@)

net80211

  ~ ieee80211_crypto.h                    

  > Keep kernel definitions under _KERNEL to unbreak security/wpa_supplicant
  > because of a missing forward declaration for kernel functions.
  > ok stsp@ (mpi@)

netinet

  ~ ip_output.c                           ~ tcp_input.c
  ~ tcp_output.c                          

  > upgrade tcp/ip to use the latest in C89 technology: memcpy.
  > ok henning (tedu@)

netinet6

  ~ in6_src.c                             

  > Remove useless "if() else", multicast and unicast v6 route lookups are
  > actually the same. This has been introduced in r1.7 to prevent RTM_MISS
  > storms, but we don't send this message anymore.
  > ok @mpi (vgross@)

== usr.bin =========================================================== 12/13 ==

  http://cvsweb.openbsd.org/cgi-bin/cvsweb/src/usr.bin

file

  ~ file.c                                

  > EAGAIN handling for imsg_read. OK henning@ benno@ (claudio@)

ftp

  ~ ftp.c                                 

  > Silence gcc whining about using 'serrno' uninitialized by initializing
  > it to 0. (krw@)

  ~ ftp.c                                 

  > Send bad whitespace to the attic. (krw@)

  ~ ftp.c                                 

  > Let special/ftp compile again. 'ares' is only used inside #ifndef SMALL, so
  > declare it inside #ifdef SMALL. (krw@)

make

  ~ lowparse.c                            

  > yet another feof check, just to be sure. (espie@)

mg

  ~ echo.c                                

  > Fix an incorrect use of sizeof(pointer) by removing it and switching
  > from strncasecmp to strcasecmp which will stop matching strings
  > with unwanted trailing characters.
  > ok jasper@ deraadt@ (jsg@)

ssh

  ~ myproposal.h                          

  > prefer rsa-sha2-512 over -256 for hostkeys, too; noticed by naddy@
  > (markus@)

tmux

  ~ proc.c                                

  > EAGAIN handling for imsg_read. OK henning@ benno@ (claudio@)

unifdef

  ~ unifdef.1                             

  > Fix previous by using the right argument name. (mmcc@)

== usr.sbin ========================================================== 13/13 ==

  http://cvsweb.openbsd.org/cgi-bin/cvsweb/src/usr.sbin

amd

  ~ amd/am_ops.c                          ~ amd/host_ops.c
  ~ amd/info_passwd.c                     ~ amd/map.c
  ~ amd/mapc.c                            ~ amd/mntfs.c
  ~ amd/nfsx_ops.c                        ~ amd/restart.c
  ~ amd/sfs_ops.c                         ~ amd/srvr_afs.c

  > Remove a bunch of NULL-checks before free(). (mmcc@)

bgpctl

  ~ bgpctl.c                              

  > EAGAIN handling for imsg_read. OK henning@ benno@ (claudio@)

bgpd

  ~ control.c                             

  > EAGAIN handling for imsg_read. OK henning@ benno@ (claudio@)

  ~ carp.c                                ~ control.c
  ~ kroute.c                              ~ mrt.c

  > cleanup some log messages with wrong function names etc.
  > ok henning,claudio (benno@)

dvmrpctl

  ~ dvmrpctl.c                            

  > EAGAIN handling for imsg_read. OK henning@ benno@ (claudio@)

dvmrpd

  ~ control.c                             ~ dvmrpd.c
  ~ dvmrpe.c                              ~ rde.c

  > EAGAIN handling for imsg_read. OK henning@ benno@ (claudio@)

eigrpctl

  ~ eigrpctl.c                            

  > Forgot about eigrp when doing the imsg_read EAGAIN fixes. (claudio@)

eigrpd

  ~ control.c                             ~ eigrpd.c
  ~ eigrpe.c                              ~ rde.c

  > Forgot about eigrp when doing the imsg_read EAGAIN fixes. (claudio@)

httpd

  ~ control.c                             ~ proc.c

  > EAGAIN handling for imsg_read. OK henning@ benno@ (claudio@)

ikectl

  ~ ikectl.c                              

  > EAGAIN handling for imsg_read. OK henning@ benno@ (claudio@)

iscsid

  ~ session.c                             

  > Don't check for NULL before free() (mmcc@)

  ~ connection.c                          ~ pdu.c
  ~ util.c                                

  > strings.h -> string.h as necessary to prevent implicit declaration
  > warnings (mmcc@)

ldapctl

  ~ ldapctl.c                             

  > EAGAIN handling for imsg_read. OK henning@ benno@ (claudio@)

ldapd

  ~ ber.c                                 

  > #include <string.h> not strings.h (claudio@)

ldpctl

  ~ ldpctl.c                              

  > EAGAIN handling for imsg_read. OK henning@ benno@ (claudio@)

ldpd

  ~ control.c                             ~ lde.c
  ~ ldpd.c                                ~ ldpe.c

  > EAGAIN handling for imsg_read. OK henning@ benno@ (claudio@)

npppctl

  ~ npppctl.c                             

  > EAGAIN handling for imsg_read. OK henning@ benno@ (claudio@)

npppd

  ~ npppd/control.c                       ~ npppd/privsep.c

  > EAGAIN handling for imsg_read. OK henning@ benno@ (claudio@)

  ~ l2tp/l2tp.h                           ~ l2tp/l2tp_call.c
  ~ npppd/npppd.c                         ~ npppd/npppd.h
  ~ npppd/npppd_iface.c                   ~ npppd/npppd_iface.h
  ~ npppd/ppp.h                           ~ pppoe/pppoe.h
  ~ pppoe/pppoe_session.c                 ~ pptp/pptp_call.c

  > Pass the pppx_hdr when sending packets through the pppx device and use the
  > ppp_id in the pppx_hdr to find the associated ppp when receiving the
  > packets
  > from the device. (yasuoka@)

  ~ common/bytebuf.c                      ~ common/hash.c
  ~ common/slist.c                        ~ l2tp/l2tp_ctrl.c
  ~ l2tp/l2tpd.c                          ~ npppd/ccp.c
  ~ npppd/lcp.c                           ~ npppd/mppe.c
  ~ npppd/npppd_auth.c                    ~ npppd/npppd_ctl.c
  ~ npppd/npppd_pool.c                    ~ npppd/ppp.c
  ~ npppd/privsep.c                       ~ npppd/radius_req.c
  ~ pptp/pptpd.c                          

  > strings.h -> string.h to prevent an implicit declaration. Also remove a
  > bunch of NULL-checks before free(). (mmcc@)

ntpd

  ~ constraint.c                          ~ control.c
  ~ ntp.c                                 ~ ntp_dns.c
  ~ ntpd.c                                

  > EAGAIN handling for imsg_read. OK henning@ benno@ (claudio@)

ospf6ctl

  ~ ospf6ctl.c                            

  > EAGAIN handling for imsg_read. OK henning@ benno@ (claudio@)

ospf6d

  ~ rde_spf.c                             

  > strings.h -> string.h to prevent an implicit declaration warning. (mmcc@)

  ~ control.c                             ~ ospf6d.c
  ~ ospfe.c                               ~ rde.c

  > EAGAIN handling for imsg_read. OK henning@ benno@ (claudio@)

ospfd

  ~ interface.c                           ~ kroute.c
  ~ ospfd.c                               ~ ospfd.h
  ~ ospfe.c                               ~ parse.y
  ~ rde.c                                 

  > Pledge ospfd SE ("stdio inet mcast") and RDE ("stdio") move some code
  > around to make it possible. Parent can't be pledged at the moment because
  > of carp ioctl (carp demote). Putting it in so that people can test.
  > OK benno@ (claudio@)

radiusd

  ~ radiusd.c                             

  > Remove NULL-checks before free() (mmcc@)

  ~ radiusd_bsdauth.c                     ~ radiusd_module.c

  > EAGAIN handling for imsg_read. OK henning@ benno@ (claudio@)

rebound

  ~ rebound.c                             

  > pull the config file opening up considerably earlier to fail fast.
  > parsing is still done in the child, so we can't guarantee success, but if
  > the file is missing entirely we won't daemonize in that state. (tedu@)

  ~ rebound.c                             

  > all the signal ignoring can be done in one place (tedu@)

relayctl

  ~ relayctl.c                            

  > EAGAIN handling for imsg_read. OK henning@ benno@ (claudio@)

relayd

  ~ snmp.c                                

  > don't attempt to process AgentX packets when a short read is encountered
  > while here, remove a pair of duplicate function definitions
  > ok benno@ (blambert@)

  ~ ca.c                                  ~ control.c
  ~ proc.c                                

  > EAGAIN handling for imsg_read. OK henning@ benno@ (claudio@)

  ~ relay.c                               

  > initialize host, to get rid of gcc warning, the conditions are correct.
  > ok henning@ (benno@)

ripctl

  ~ ripctl.c                              

  > EAGAIN handling for imsg_read. OK henning@ benno@ (claudio@)

ripd

  ~ control.c                             ~ rde.c
  ~ ripd.c                                ~ ripe.c

  > EAGAIN handling for imsg_read. OK henning@ benno@ (claudio@)

smtpd

  ~ ca.c                                  ~ enqueue.c
  ~ mproc.c                               ~ queue_proc.c
  ~ scheduler_proc.c                      ~ smtpctl.c
  ~ table_api.c                           ~ table_proc.c

  > EAGAIN handling for imsg_read. OK henning@ benno@ (claudio@)

  ~ forward.c                             ~ iobuf.c
  ~ mta_session.c                         ~ smtpd.c
  ~ ssl.c                                 

  > Remove a few NULL-checks before free(). (mmcc@)

snmpctl

  ~ snmpctl.c                             

  > EAGAIN handling for imsg_read. OK henning@ benno@ (claudio@)

snmpd

  ~ agentx.c                              ~ ber.c
  ~ control.c                             ~ mps.c
  ~ smi.c                                 ~ trap.c

  > strings.h -> string.h to prevent an implicit declaration warning. Also
  > remove a handful of NULL-checks before free(). (mmcc@)

  ~ control.c                             ~ proc.c

  > EAGAIN handling for imsg_read. OK henning@ benno@ (claudio@)

tcpdump

  ~ print-l2tp.c                          

  > strings.h -> string.h so that memcpy is declared.   ok deraadt (mmcc@)

  - CHANGES                               

  > Remove a log of changes from 1991 to 1998. (mmcc@)

  ~ pfctl_osfp.c                          ~ privsep.c

  > Remove two sets of NULL-checks before free(). (mmcc@)

  - VERSION                               

  > Remove VERSION, whose contents were simply "3.4". (mmcc@)

  ~ README                                

  > Remove LBL-specific stuff and a reference to CHANGES. (mmcc@)

  ~ INSTALL                               

  > Remove ancient and no longer valid installation instructions. (mmcc@)

vmctl

  ~ main.c                                ~ vmctl.8

  > vmctl has no need to change the socket that talks to vmd.
  > discussed with reyk (deraadt@)

  ~ main.c                                

  > Another imsg_read user I did miss in my EAGAIN rampage. (claudio@)

  ~ vmctl.c                               

  > Align columns to printed output in "vmctl status" (mlarkin@)

  ~ Makefile                              ~ vmctl.c

  > Add OpenBSD Id (reyk@)

  ~ main.c                                ~ vmctl.8

  > use argument names consistently.
  > ok reyk@ (sobrado@)

vmd

  ~ control.c                             ~ proc.c

  > Another imsg_read user I did miss in my EAGAIN rampage. (claudio@)

  ~ vmd.c                                 

  > Print shorter error message if opening /dev/vmm failed.
  > Pointed out by deraadt@ (reyk@)

ypldap

  ~ ldapclient.c                          ~ ypldap.c
  ~ ypldap_dns.c                          

  > EAGAIN handling for imsg_read. OK henning@ benno@ (claudio@)

  ~ aldap.c                               ~ ber.c

  > strings.h -> string.h to prevent an implicit declaration. Also removes
  > two NULL-checks before free(). (mmcc@)

===============================================================================
_______________________________________________
odc mailing list
[email protected]
http://www.squish.net/mailman/listinfo/odc

Reply via email to