Example #1
0
/***
 *  rt_packet_ioctl
 */
static int rt_packet_ioctl(struct rtdm_fd *fd, unsigned int request, void *arg)
{
    struct rtsocket *sock = rtdm_fd_to_private(fd);
    struct _rtdm_setsockaddr_args *setaddr = arg;
    struct _rtdm_getsockaddr_args *getaddr = arg;


    /* fast path for common socket IOCTLs */
    if (_IOC_TYPE(request) == RTIOC_TYPE_NETWORK)
	return rt_socket_common_ioctl(fd, request, arg);

    switch (request) {
	case _RTIOC_BIND:
	    return rt_packet_bind(sock, setaddr->addr, setaddr->addrlen);

	case _RTIOC_GETSOCKNAME:
	    return rt_packet_getsockname(sock, getaddr->addr,
					 getaddr->addrlen);

	default:
	    return rt_socket_if_ioctl(fd, request, arg);
    }
}
Example #2
0
/***
 *  rt_packet_ioctl
 */
int rt_packet_ioctl(struct rtdm_dev_context *sockctx,
                    rtdm_user_info_t *user_info, int request, void *arg)
{
    struct rtsocket *sock = (struct rtsocket *)&sockctx->dev_private;
    struct _rtdm_setsockaddr_args *setaddr = arg;
    struct _rtdm_getsockaddr_args *getaddr = arg;


    /* fast path for common socket IOCTLs */
    if (_IOC_TYPE(request) == RTIOC_TYPE_NETWORK)
        return rt_socket_common_ioctl(sockctx, user_info, request, arg);

    switch (request) {
        case _RTIOC_BIND:
            return rt_packet_bind(sock, setaddr->addr, setaddr->addrlen);

        case _RTIOC_GETSOCKNAME:
            return rt_packet_getsockname(sock, getaddr->addr,
                                         getaddr->addrlen);

        default:
            return rt_socket_if_ioctl(sockctx, user_info, request, arg);
    }
}