From 7a4004413211ac1422a34563cda24b15aae4d7c3 Mon Sep 17 00:00:00 2001 From: Stelian Ionescu Date: Sun, 5 May 2013 03:23:09 +0200 Subject: [PATCH] Add netlink address class --- src/sockets/address.lisp | 12 ++++++++++++ src/sockets/pkgdcl.lisp | 2 ++ 2 files changed, 14 insertions(+) diff --git a/src/sockets/address.lisp b/src/sockets/address.lisp index 9852543..d5478e3 100644 --- a/src/sockets/address.lisp +++ b/src/sockets/address.lisp @@ -35,6 +35,10 @@ ADDRESS-NAME reader.")) (unset-method-docstring #'abstract-address-p () '(local-address)) (set-function-docstring 'abstract-address-p "Return T if ADDRESS is a LOCAL-ADDRESS that lives in the abstract namespace.") +(defclass netlink-address (address) + ((multicast-groups :initform 0 :initarg :multicast-groups + :reader netlink-address-multicast-groups))) + (defmethod initialize-instance :after ((address local-address) &key) (with-slots (name) address (etypecase name @@ -347,6 +351,9 @@ returned unmodified." (format nil "~:[~;@~]~S" (abstract-address-p address) (address-name address))) +(defmethod address-to-string ((address netlink-address)) + (format nil "~A" (netlink-address-multicast-groups address))) + (defmethod print-object ((address inet-address) stream) (let ((namestring (address-to-string address))) (if (or *print-readably* *print-escape*) @@ -358,6 +365,11 @@ returned unmodified." (format stream "Unix socket address: ~A" (address-to-string address)))) +(defmethod print-object ((address netlink-address) stream) + (print-unreadable-object (address stream :type nil :identity nil) + (format stream "Netlink socket address: ~A" + (address-to-string address)))) + ;;;; Reader Macro (define-literal-reader ip (stream) diff --git a/src/sockets/pkgdcl.lisp b/src/sockets/pkgdcl.lisp index c1a91d9..7ea7e0f 100644 --- a/src/sockets/pkgdcl.lisp +++ b/src/sockets/pkgdcl.lisp @@ -62,6 +62,7 @@ #:ipv4-address #:ipv6-address #:local-address + #+linux #:netlink-address ;; Address Functions #:address-name @@ -71,6 +72,7 @@ #:copy-address #:ensure-address #:make-address + #+linux #:netlink-address-multicast-groups ;; Well-known Addresses #:+ipv4-loopback+ -- 2.11.4.GIT