anchor.diff:            (connect socket (convert-or-lookup-inet-address remote-host)
                      :port remote-port))))))
   
  -(defun %make-local-datagram-socket (args ef)
  -  (destructuring-bind (&key family local-filename remote-filename) args
  -    (%with-close-on-error (socket (create-socket :family family :type :datagram
  -                                                 :connect :active :external-format ef))
  +(defun %make-local-datagram-socket (args family ef)
  +  (destructuring-bind (&key local-filename remote-filename) args
  +    (%with-close-on-error (socket (create-socket family :datagram :active ef))
         (when local-filename
           (bind-address socket (ensure-address local-filename :local)))
         (when remote-filename
  
positive.code: 
  (in-package :net.sockets)
  
  (defun create-socket (&key (family :internet) (type :stream) (connect :active)
                        (protocol :default) (ipv6 *ipv6*)
                        (external-format :default))
    (let ((family (if (or (null family) (eq family :internet))
                      (if ipv6 :ipv6 :ipv4)
                      family)))
      (make-instance (select-socket-class family type connect protocol)
                     :family family
                     :external-format external-format)))
  
  (defmacro %with-close-on-error ((var value) &body body)
    "Bind VAR to VALUE, execute BODY as implicit PROGN and return VAR.
  
negative.code:   (check-type family (member :internet :local :ipv4 :ipv6) "one of :INTERNET, :LOCAL, :IPV4 or :IPV6")
    (check-type type (member :stream :datagram) "either :STREAM or :DATAGRAM")
    (check-type connect (member :active :passive) "either :ACTIVE or :PASSIVE")
    (dolist (key '(:family :type :connect :external-format :ipv6))
      (remf args key))
    (case family
      (:internet (setf family (if ipv6 :ipv6 :ipv4)))
      (:ipv4     (setf ipv6 nil)))
    (let ((*ipv6* ipv6))
      (multiple-value-case (family type connect)
        (((:ipv4 :ipv6) :stream :active)
         (%make-internet-stream-active-socket args family external-format))
        (((:ipv4 :ipv6) :stream :passive)
         (%make-internet-stream-passive-socket args family external-format))
        ((:local :stream :active)
         (%make-local-stream-active-socket args :local external-format))
        ((:local :stream :passive)
         (%make-local-stream-passive-socket args :local external-format))
        (((:ipv4 :ipv6) :datagram)
         (%make-internet-datagram-socket args family external-format))
        ((:local :datagram)
         (%make-local-datagram-socket args :local external-format)))))
  
  (defmacro with-open-socket ((var &rest args) &body body)
    "VAR is bound to a socket created by passing ARGS to
  