From b142bf8eefc5a41f21fdcf134d0e96a0a9281b2f Mon Sep 17 00:00:00 2001 From: Stelian Ionescu Date: Wed, 30 Jan 2008 14:14:06 +0100 Subject: [PATCH] More cleanups in interface lookup code. Signed-off-by: Stelian Ionescu --- net.sockets/bsd.lisp | 13 +++++++++---- net.sockets/iface.lisp | 12 ++++-------- 2 files changed, 13 insertions(+), 12 deletions(-) diff --git a/net.sockets/bsd.lisp b/net.sockets/bsd.lisp index fe21f5e..6332aac 100644 --- a/net.sockets/bsd.lisp +++ b/net.sockets/bsd.lisp @@ -159,15 +159,20 @@ ;;;; net/if.h (defcfun ("if_nametoindex" %if-nametoindex) - (errno-wrapper :unsigned-int :error-predicate zerop) + (errno-wrapper :unsigned-int :error-predicate zerop + :error-generator (lambda (r) + (declare (ignore r)) + (nix::posix-error :enxio))) (ifname :string)) -(define-socket-call ("if_indextoname" %if-indextoname) :string +(defcfun ("if_indextoname" %if-indextoname) + (errno-wrapper :string) (ifindex :unsigned-int) (ifname :pointer)) -(define-socket-call ("if_nameindex" %if-nameindex) :pointer +(defcfun ("if_nameindex" %if-nameindex) + (errno-wrapper :pointer) "Return all network interface names and indexes") -(define-socket-call ("if_freenameindex" %if-freenameindex) :void +(defcfun ("if_freenameindex" %if-freenameindex) :void (ptr :pointer)) diff --git a/net.sockets/iface.lisp b/net.sockets/iface.lisp index 560c613..073a034 100644 --- a/net.sockets/iface.lisp +++ b/net.sockets/iface.lisp @@ -25,11 +25,7 @@ (defclass interface () ((name :initarg :name :reader interface-name - :initform (error "The interface must have a name.") - :documentation "The interface's name.") - (index :initarg :index :reader interface-index - :initform (error "The interface must have an index.") - :documentation "The interface's index number.")) + (index :initarg :index :reader interface-index))) (:documentation "Class describing a network interface.")) (defmethod print-object ((interface interface) stream) @@ -71,9 +67,9 @@ (unless (null-pointer-p ifptr) (%if-freenameindex ifptr)))))) (defun get-interface-by-index (index) - (with-foreign-object (buff :uint8 ifnamesize) + (with-foreign-object (buffer :uint8 ifnamesize) (handler-case - (%if-indextoname index buff) + (%if-indextoname index buffer) (nix:enxio (error) (signal-unknown-interface-error error index)) (:no-error (name) @@ -82,7 +78,7 @@ (defun get-interface-by-name (name) (handler-case (%if-nametoindex name) - (nix:enodev (error) + (nix:enxio (error) (signal-unknown-interface-error error name)) (:no-error (index) (make-interface (copy-seq name) index)))) -- 2.11.4.GIT