Report abuse


			
     Option values may be structs. Passing them can be complex as it 
     involves examining your system headers to determine the correct 
     definition. An example is an ip_mreq, which may be defined in your 
     system headers as:

       struct ip_mreq {
         struct  in_addr imr_multiaddr;
         struct  in_addr imr_interface;
       };

     In this case #setsockopt could be called like this:

       optval =  IPAddr.new("224.0.0.251") + Socket::INADDR_ANY
       sock.setsockopt(Socket::IPPROTO_IP, Socket::IP_ADD_MEMBERSHIP, optval)