summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorArnaldo Carvalho de Melo <acme@redhat.com>2009-04-28 10:38:37 -0300
committerArnaldo Carvalho de Melo <acme@redhat.com>2009-04-28 10:39:03 -0300
commit5216b458b4e9d872eed60969cb1a9daf79a96aed (patch)
tree26bd96c0560849e9ca28bd8f475f4f47ed8cc4f2
parent56e1fc07b1e3ef4e92bdd78e993da8fc5791cb5f (diff)
downloadpython-inet_diag-5216b458b4e9d872eed60969cb1a9daf79a96aed.tar.gz
inet_diag: Add some macros to ease adding new methods
Resulting code is the same as before, just source code got shorter. Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
-rwxr-xr-x[-rw-r--r--]psk.py0
-rw-r--r--python-inet_diag/inet_diag.c115
2 files changed, 32 insertions, 83 deletions
diff --git a/psk.py b/psk.py
index 42d6574..42d6574 100644..100755
--- a/psk.py
+++ b/psk.py
diff --git a/python-inet_diag/inet_diag.c b/python-inet_diag/inet_diag.c
index db41ac5..190c569 100644
--- a/python-inet_diag/inet_diag.c
+++ b/python-inet_diag/inet_diag.c
@@ -133,46 +133,6 @@ static PyObject *inet_socket__saddr(struct inet_socket *self,
return PyString_FromString(buf);
}
-static char inet_socket__dport_doc__[] =
-"sport() -- get internet socket destination port";
-static PyObject *inet_socket__dport(struct inet_socket *self,
- PyObject *args __unused)
-{
- return Py_BuildValue("i", ntohs(self->msg.id.idiag_dport));
-}
-
-static char inet_socket__sport_doc__[] =
-"sport() -- get internet socket source port";
-static PyObject *inet_socket__sport(struct inet_socket *self,
- PyObject *args __unused)
-{
- return Py_BuildValue("i", ntohs(self->msg.id.idiag_sport));
-}
-
-static char inet_socket__receive_queue_doc__[] =
-"receive_queue() -- get internet socket receive queue length";
-static PyObject *inet_socket__receive_queue(struct inet_socket *self,
- PyObject *args __unused)
-{
- return Py_BuildValue("i", self->msg.idiag_rqueue);
-}
-
-static char inet_socket__write_queue_doc__[] =
-"write_queue() -- get internet socket write queue length";
-static PyObject *inet_socket__write_queue(struct inet_socket *self,
- PyObject *args __unused)
-{
- return Py_BuildValue("i", self->msg.idiag_wqueue);
-}
-
-static char inet_socket__inode_doc__[] =
-"inode() -- get internet socket associated inode";
-static PyObject *inet_socket__inode(struct inet_socket *self,
- PyObject *args __unused)
-{
- return Py_BuildValue("i", self->msg.idiag_inode);
-}
-
static char inet_socket__state_doc__[] =
"sport() -- get internet socket state";
static PyObject *inet_socket__state(struct inet_socket *self,
@@ -181,50 +141,39 @@ static PyObject *inet_socket__state(struct inet_socket *self,
return PyString_FromString(sstate_name[self->msg.idiag_state]);
}
+#define INET_SOCK__INT_METHOD(name, field, doc) \
+static char inet_socket__##name##_doc__[] = #name "() -- " doc; \
+static PyObject *inet_socket__##name(struct inet_socket *self, \
+ PyObject *args __unused) \
+{ return Py_BuildValue("i", self->msg.field); }
+
+INET_SOCK__INT_METHOD(dport, id.idiag_dport,
+ "get internet socket destination port");
+INET_SOCK__INT_METHOD(sport, id.idiag_sport,
+ "get internet socket source port");
+INET_SOCK__INT_METHOD(receive_queue, idiag_rqueue,
+ "get internet socket receive queue length");
+INET_SOCK__INT_METHOD(write_queue, idiag_rqueue,
+ "get internet socket write queue length");
+INET_SOCK__INT_METHOD(inode, idiag_inode,
+ "get internet socket associated inode");
+
+#define INET_SOCK__METHOD(name) { \
+ .ml_name = #name, \
+ .ml_meth = (PyCFunction)inet_socket__##name, \
+ .ml_doc = inet_socket__##name##_doc__, \
+}
+
static struct PyMethodDef inet_socket__methods[] = {
- {
- .ml_name = "daddr",
- .ml_meth = (PyCFunction)inet_socket__daddr,
- .ml_doc = inet_socket__daddr_doc__,
- },
- {
- .ml_name = "saddr",
- .ml_meth = (PyCFunction)inet_socket__saddr,
- .ml_doc = inet_socket__saddr_doc__,
- },
- {
- .ml_name = "dport",
- .ml_meth = (PyCFunction)inet_socket__dport,
- .ml_doc = inet_socket__dport_doc__,
- },
- {
- .ml_name = "sport",
- .ml_meth = (PyCFunction)inet_socket__sport,
- .ml_doc = inet_socket__sport_doc__,
- },
- {
- .ml_name = "receive_queue",
- .ml_meth = (PyCFunction)inet_socket__receive_queue,
- .ml_doc = inet_socket__receive_queue_doc__,
- },
- {
- .ml_name = "write_queue",
- .ml_meth = (PyCFunction)inet_socket__write_queue,
- .ml_doc = inet_socket__write_queue_doc__,
- },
- {
- .ml_name = "inode",
- .ml_meth = (PyCFunction)inet_socket__inode,
- .ml_doc = inet_socket__inode_doc__,
- },
- {
- .ml_name = "state",
- .ml_meth = (PyCFunction)inet_socket__state,
- .ml_doc = inet_socket__state_doc__,
- },
- {
- .ml_name = NULL,
- }
+ INET_SOCK__METHOD(daddr),
+ INET_SOCK__METHOD(saddr),
+ INET_SOCK__METHOD(dport),
+ INET_SOCK__METHOD(sport),
+ INET_SOCK__METHOD(receive_queue),
+ INET_SOCK__METHOD(write_queue),
+ INET_SOCK__METHOD(inode),
+ INET_SOCK__METHOD(state),
+ { .ml_name = NULL, }
};
static PyObject *inet_socket__getattr(struct inet_socket *self, char *name)