>From 2a6246b9158df6c4ef1000a5a92b599a1f393f7f Mon Sep 17 00:00:00 2001 From: Florian Weimer Date: Wed, 27 Mar 2013 10:10:01 +0100 Subject: [PATCH 1/2] Functions which modify state should not take const arguments Sending and receiving packets and changing socket options modify the internal socket state, which was not reflected in the prototype. mnl_socket_get_fd provides access to the underlying file descriptor, which indirectly allows modification. Signed-off-by: Florian Weimer --- include/libmnl/libmnl.h | 8 ++++---- src/socket.c | 8 ++++---- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/include/libmnl/libmnl.h b/include/libmnl/libmnl.h index a647fd9..5145ba5 100644 --- a/include/libmnl/libmnl.h +++ b/include/libmnl/libmnl.h @@ -29,11 +29,11 @@ struct mnl_socket; extern struct mnl_socket *mnl_socket_open(int type); extern int mnl_socket_bind(struct mnl_socket *nl, unsigned int groups, pid_t pid); extern int mnl_socket_close(struct mnl_socket *nl); -extern int mnl_socket_get_fd(const struct mnl_socket *nl); +extern int mnl_socket_get_fd(struct mnl_socket *nl); extern unsigned int mnl_socket_get_portid(const struct mnl_socket *nl); -extern ssize_t mnl_socket_sendto(const struct mnl_socket *nl, const void *req, size_t siz); -extern ssize_t mnl_socket_recvfrom(const struct mnl_socket *nl, void *buf, size_t siz); -extern int mnl_socket_setsockopt(const struct mnl_socket *nl, int type, void *buf, socklen_t len); +extern ssize_t mnl_socket_sendto(struct mnl_socket *nl, const void *req, size_t siz); +extern ssize_t mnl_socket_recvfrom(struct mnl_socket *nl, void *buf, size_t siz); +extern int mnl_socket_setsockopt(struct mnl_socket *nl, int type, void *buf, socklen_t len); extern int mnl_socket_getsockopt(const struct mnl_socket *nl, int type, void *buf, socklen_t *len); /* diff --git a/src/socket.c b/src/socket.c index 6d54563..c77af91 100644 --- a/src/socket.c +++ b/src/socket.c @@ -82,7 +82,7 @@ struct mnl_socket { * * This function returns the file descriptor of a given netlink socket. */ -int mnl_socket_get_fd(const struct mnl_socket *nl) +int mnl_socket_get_fd(struct mnl_socket *nl) { return nl->fd; } @@ -178,7 +178,7 @@ EXPORT_SYMBOL(mnl_socket_bind); * returns the number of bytes sent. */ ssize_t -mnl_socket_sendto(const struct mnl_socket *nl, const void *buf, size_t len) +mnl_socket_sendto(struct mnl_socket *nl, const void *buf, size_t len) { static const struct sockaddr_nl snl = { .nl_family = AF_NETLINK @@ -203,7 +203,7 @@ EXPORT_SYMBOL(mnl_socket_sendto); * message without truncating it. */ ssize_t -mnl_socket_recvfrom(const struct mnl_socket *nl, void *buf, size_t bufsiz) +mnl_socket_recvfrom(struct mnl_socket *nl, void *buf, size_t bufsiz) { ssize_t ret; struct sockaddr_nl addr; @@ -276,7 +276,7 @@ EXPORT_SYMBOL(mnl_socket_close); * * On error, this function returns -1 and errno is appropriately set. */ -int mnl_socket_setsockopt(const struct mnl_socket *nl, int type, +int mnl_socket_setsockopt(struct mnl_socket *nl, int type, void *buf, socklen_t len) { return setsockopt(nl->fd, SOL_NETLINK, type, buf, len); -- 1.8.1.4