| #!/usr/bin/python |
| import socket, struct, os, signal, sys |
| # -*- coding: utf-8 -*- |
| |
| """ |
| Script used to join machine into multicast groups. |
| |
| @author Amos Kong <akong@redhat.com> |
| """ |
| |
| if __name__ == "__main__": |
| if len(sys.argv) < 4: |
| print """%s [mgroup_count] [prefix] [suffix] |
| mgroup_count: count of multicast addresses |
| prefix: multicast address prefix |
| suffix: multicast address suffix""" % sys.argv[0] |
| sys.exit() |
| |
| mgroup_count = int(sys.argv[1]) |
| prefix = sys.argv[2] |
| suffix = int(sys.argv[3]) |
| |
| s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) |
| for i in range(mgroup_count): |
| mcast = prefix + "." + str(suffix + i) |
| try: |
| mreq = struct.pack("4sl", socket.inet_aton(mcast), |
| socket.INADDR_ANY) |
| s.setsockopt(socket.IPPROTO_IP, socket.IP_ADD_MEMBERSHIP, mreq) |
| except: |
| s.close() |
| print "Could not join multicast: %s" % mcast |
| raise |
| |
| print "join_mcast_pid:%s" % os.getpid() |
| os.kill(os.getpid(), signal.SIGSTOP) |
| s.close() |