The Labs \ Source Viewer \ SSCLI \ System.Net.Sockets \ IPv6MulticastOption

  1. //------------------------------------------------------------------------------
  2. // <copyright file="MulticastOption.cs" company="Microsoft">
  3. //
  4. // Copyright (c) 2006 Microsoft Corporation. All rights reserved.
  5. //
  6. // The use and distribution terms for this software are contained in the file
  7. // named license.txt, which can be found in the root of this distribution.
  8. // By using this software in any fashion, you are agreeing to be bound by the
  9. // terms of this license.
  10. //
  11. // You must not remove this notice, or any other, from this software.
  12. //
  13. // </copyright>
  14. //------------------------------------------------------------------------------
  15. namespace System.Net.Sockets
  16. {
  17.     using System.Net;
  18.    
  19.     /// <devdoc>
  20.     /// <para>
  21.     /// Contains option values
  22.     /// for IP multicast packets.
  23.     /// </para>
  24.     /// </devdoc>
  25.     public class MulticastOption
  26.     {
  27.         IPAddress group;
  28.         IPAddress localAddress;
  29.         int ifIndex;
  30.        
  31.         /// <devdoc>
  32.         /// <para>
  33.         /// Creates a new instance of the MulticaseOption class with the specified IP
  34.         /// address group and local address.
  35.         /// </para>
  36.         /// </devdoc>
  37.         public MulticastOption(IPAddress group, IPAddress mcint)
  38.         {
  39.            
  40.             if (group == null) {
  41.                 throw new ArgumentNullException("group");
  42.             }
  43.            
  44.             if (mcint == null) {
  45.                 throw new ArgumentNullException("mcint");
  46.             }
  47.            
  48.             Group = group;
  49.             LocalAddress = mcint;
  50.         }
  51.        
  52.        
  53.         public MulticastOption(IPAddress group, int interfaceIndex)
  54.         {
  55.            
  56.             if (group == null) {
  57.                 throw new ArgumentNullException("group");
  58.             }
  59.            
  60.             if (interfaceIndex < 0 || interfaceIndex > 16777215) {
  61.                 throw new ArgumentOutOfRangeException("interfaceIndex");
  62.             }
  63.            
  64.            
  65.             Group = group;
  66.             ifIndex = interfaceIndex;
  67.         }
  68.        
  69.        
  70.         /// <devdoc>
  71.         /// <para>
  72.         /// Creates a new version of the MulticastOption class for the specified
  73.         /// group.
  74.         /// </para>
  75.         /// </devdoc>
  76.         public MulticastOption(IPAddress group)
  77.         {
  78.            
  79.             if (group == null) {
  80.                 throw new ArgumentNullException("group");
  81.             }
  82.            
  83.             Group = group;
  84.            
  85.             LocalAddress = IPAddress.Any;
  86.         }
  87.        
  88.         /// <devdoc>
  89.         /// <para>
  90.         /// Sets the IP address of a multicast group.
  91.         /// </para>
  92.         /// </devdoc>
  93.         public IPAddress Group {
  94.             get { return group; }
  95.             set { group = value; }
  96.         }
  97.        
  98.         /// <devdoc>
  99.         /// <para>
  100.         /// Sets the local address of a multicast group.
  101.         /// </para>
  102.         /// </devdoc>
  103.         public IPAddress LocalAddress {
  104.             get { return localAddress; }
  105.             set {
  106.                 ifIndex = 0;
  107.                 localAddress = value;
  108.             }
  109.         }
  110.        
  111.        
  112.         public int InterfaceIndex {
  113.             get { return ifIndex; }
  114.             set {
  115.                 if (value < 0 || value > 16777215) {
  116.                     throw new ArgumentOutOfRangeException("value");
  117.                 }
  118.                
  119.                
  120.                 localAddress = null;
  121.                 ifIndex = value;
  122.             }
  123.         }
  124.     }
  125.     // class MulticastOption
  126.     /// <devdoc>
  127.     /// <para>
  128.     /// Contains option values for joining an IPv6 multicast group.
  129.     /// </para>
  130.     /// </devdoc>
  131.     public class IPv6MulticastOption
  132.     {
  133.         IPAddress m_Group;
  134.         long m_Interface;
  135.        
  136.         /// <devdoc>
  137.         /// <para>
  138.         /// Creates a new instance of the MulticaseOption class with the specified IP
  139.         /// address group and local address.
  140.         /// </para>
  141.         /// </devdoc>
  142.         public IPv6MulticastOption(IPAddress group, long ifindex)
  143.         {
  144.            
  145.             if (group == null) {
  146.                 throw new ArgumentNullException("group");
  147.             }
  148.            
  149.             if (ifindex < 0 || ifindex > 4294967295u) {
  150.                 throw new ArgumentOutOfRangeException("ifindex");
  151.             }
  152.            
  153.             Group = group;
  154.             InterfaceIndex = ifindex;
  155.         }
  156.        
  157.         /// <devdoc>
  158.         /// <para>
  159.         /// Creates a new version of the MulticastOption class for the specified
  160.         /// group.
  161.         /// </para>
  162.         /// </devdoc>
  163.         public IPv6MulticastOption(IPAddress group)
  164.         {
  165.            
  166.             if (group == null) {
  167.                 throw new ArgumentNullException("group");
  168.             }
  169.            
  170.             Group = group;
  171.             InterfaceIndex = 0;
  172.         }
  173.        
  174.         /// <devdoc>
  175.         /// <para>
  176.         /// Sets the IP address of a multicast group.
  177.         /// </para>
  178.         /// </devdoc>
  179.         public IPAddress Group {
  180.             get { return m_Group; }
  181.             set {
  182.                 if (value == null) {
  183.                     throw new ArgumentNullException("value");
  184.                 }
  185.                
  186.                 m_Group = value;
  187.             }
  188.         }
  189.        
  190.         /// <devdoc>
  191.         /// <para>
  192.         /// Sets the interface index.
  193.         /// </para>
  194.         /// </devdoc>
  195.         public long InterfaceIndex {
  196.             get { return m_Interface; }
  197.             set {
  198.                 if (value < 0 || value > 4294967295u) {
  199.                     throw new ArgumentOutOfRangeException("value");
  200.                 }
  201.                
  202.                 m_Interface = value;
  203.             }
  204.         }
  205.        
  206.     }
  207.     // class MulticastOptionIPv6
  208. }
  209. // namespace System.Net.Sockets

Developer Fusion