in scripts/mcast.py [0:0]
def __init__(self, grp_addr, if_addr=IP4_ADDR_ANY, ttl=1):
"""
@param grp_addr: Multicast network address
@param if_addr: Interface address to use for.
@param ttl: time to live.
SEE ALSO: getsockopt(2), ip(7)
"""
socket.socket.__init__(self, socket.AF_INET, socket.SOCK_DGRAM, socket.IPPROTO_UDP)
self.mreq = socket.inet_aton(grp_addr) + socket.inet_aton(if_addr)
if if_addr != IP4_ADDR_ANY:
# Specify the interface to send packets.
self.setsockopt(socket.SOL_IP, socket.IP_MULTICAST_IF, socket.inet_aton(if_addr))
else:
# The interface to send packets will be selected by kernel
# automatically.
pass
if ttl > 1:
self.setsockopt(socket.IPPROTO_IP, socket.IP_MULTICAST_TTL, struct.pack('b', ttl))
self.grp_addr = grp_addr
self.if_addr = if_addr