anchor.diff:  end;
   
   {$IFNDEF CIL}
  -procedure TUDPBlockSocket.AddMulticast(MCastIP: string);
  +procedure TUDPBlockSocket.AddMulticast(const MCastIP: AnsiString; const Intf: AnsiString = '');
   var
     Multicast: TIP_mreq;
     Multicast6: TIPv6_mreq;
  
positive.code:     ip6 := StrToIp6(MCastIP);
      for n := 0 to 15 do
        Multicast6.ipv6mr_multiaddr.u6_addr8[n] := Ip6[n];
      Multicast6.ipv6mr_interface := 0;
      SockCheck(synsock.SetSockOpt(FSocket, IPPROTO_IPV6, IPV6_JOIN_GROUP,
        PAnsiChar(@Multicast6), SizeOf(Multicast6)));
    end
    else
    begin
      Multicast.imr_multiaddr.S_addr := swapbytes(strtoip(MCastIP));
      Multicast.imr_interface.S_addr := INADDR_ANY;
      SockCheck(synsock.SetSockOpt(FSocket, IPPROTO_IP, IP_ADD_MEMBERSHIP,
        PAnsiChar(@Multicast), SizeOf(Multicast)));
    end;
    ExceptCheck;
  end;
  
  procedure TUDPBlockSocket.DropMulticast(MCastIP: string);
  var
    Multicast: TIP_mreq;
    Multicast6: TIPv6_mreq;
  
negative.code: {$IFNDEF CIL}
      {:Add this socket to given multicast group. You cannot use Multicasts in
       SOCKS mode!}
      procedure AddMulticast(const MCastIP: string; const Intf: string = '');
  
      {:Remove this socket from given multicast group.}
      procedure DropMulticast(const MCastIP: string; const Intf: string = '');
  {$ENDIF}
      {:All sended multicast datagrams is loopbacked to your interface too. (you
       can read your sended datas.) You can disable this feature by this function.
  