Beispiel #1
0
def send_fds(sock, fds, data='\n'):
    """
    Send file descriptors over a Unix domain socket.

    @param sock: socket or fd

    @type sock: socket.socket or int

    @param fds: file descriptors to send

    @type num: iterable of int

    @param data: data to transfer, to force C{sendmsg(2)} to do work

    @type data: str
    """
    if not isinstance(sock, int):
        sock = sock.fileno()
    return sendmsg(
        fd=sock,
        data=data,
        ancillary=[
            (
                SOL_SOCKET,
                SCM_RIGHTS,
                array.array('i', fds).tostring(),
                ),
            ],
        )
Beispiel #2
0
 def sendmsg(self, **kwargs):
     if not self.bound:
         return -errno.ENOTCONN
     print kwargs
     return sendmsg(self.socket, **kwargs)
Beispiel #3
0
 def sendmsg(self, **kwargs):
     if not self.bound:
         return -errno.ENOTCONN
     print kwargs
     return sendmsg(self.socket, **kwargs)
Beispiel #4
0
#!/usr/bin/python

import socket
from eunuchs.sendmsg import sendmsg
from socket import SOL_SOCKET, SO_BROADCAST, SOL_IP
IP_PKTINFO = 8 #TODO
IP_RETOPTS = 7 #TODO

s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.setsockopt(SOL_SOCKET, SO_BROADCAST, 1)
s.setsockopt(SOL_IP, IP_PKTINFO, 1)
sendmsg(fd=s.fileno(),
        host='255.255.255.255',
        port=4242,
        data="foo",
        flags=0,
        ancillary=[
    (SOL_IP, IP_PKTINFO, (10, #interface index
                          '0.0.0.0',
                          '255.255.255.255',
                          )),
    #(SOL_IP, IP_RETOPTS, ''),
    ],
        )