anchor.diff:  
   ;; int socket(int socket_family, int socket_type, int protocol);
   (defcfun (%socket "socket") :int32
  -  (family :int32)
  +v  (family :int32)
     (type :int32)
     (prot :int32))
   
  
positive.code: 		(n-size (length n))) 
  	  (lisp-string-to-foreign n (foreign-slot-value ifr '(:struct ifreq) 'name) (1+ n-size))
  	  (%ioctl fd +siocgifindex+ ifr)
  	  (with-foreign-object (sockaddr '(:struct sockaddr_can))
  	    (setf (foreign-slot-value sockaddr '(:struct sockaddr_can) 'can_family) +pf_can+)
  	    (let* ((ifrdata (foreign-slot-value ifr '(:struct ifreq) 'data))
  		   (index (foreign-slot-value ifrdata '(:union ifreq-data) 'ifindex)))      
  	      (setf (foreign-slot-value sockaddr '(:struct sockaddr_can) 'can_ifindex) index))
  	    (setq sock-addr-pointer sockaddr
  		  sock-addr-len (foreign-type-size '(:struct sockaddr-in))))))
  	;; bind internet socket
  
negative.code: (defcunion can_address
    (tp (:struct TP)))
    
  (defcstruct sockaddr-can
    (can_family sa_family_t)
    (can_ifindex :int)
    (can_addr (:union can_address)))
  