Casting const pointer to non-const pointer when using struct iovec struct iovec is defined in &lt;uio.h&gt; by the following way:

/* Structure for scatter/gather I/O.  */
struct iovec
  {
    void *iov_base; /* Pointer to data.  */
    size_t iov_len; /* Length of data.  */
  };


Now I do ugly casting from const void* to void*:

int send_frame_once( int fd, const struct iovec* iov, size_t iovlen );


int send_frame( int fd, const void* buffer, size_t len )
{
    struct iovec iov;
    iov.iov_base = (void*)buffer;       /* const iov cast */
    iov.iov_len  = len;
    return send_frame_once( fd, &amp;iov, 1 );
}


Is that necessary kludge?
Or should I remove const keyword from declaration of send_frame function. Like this:

int send_frame( int fd, void* buffer, size_t len )
I think you should keep it. const is not only meant for the compiler, but also for anybody reading your code. Even with the void* cast, you're still saying to readers "Trust me, I'm not touching your buffer!" and this is a valuable information that should not be discarded.