summaryrefslogtreecommitdiffstats
path: root/3rdparty/openpgm-svn-r1135/pgm/mld-semantics.txt
blob: 135400d607e12879ce61425ab27226d905627a36 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
previous request		following request		return
  -----------------		-----------------		-----------
  MCAST_JOIN_GROUP		MCAST_JOIN_GROUP		EADDRINUSE
  MCAST_JOIN_GROUP		MCAST_LEAVE_GROUP		0
  MCAST_JOIN_GROUP		MCAST_JOIN_SOURCE_GROUP		EINVAL
  MCAST_JOIN_GROUP		MCAST_LEAVE_SOURCE_GROUP	EINVAL
  MCAST_JOIN_GROUP		MCAST_BLOCK_SOURCE		0
  MCAST_JOIN_SOURCE_GROUP	MCAST_JOIN_GROUP		EADDRINUSE
  MCAST_JOIN_SOURCE_GROUP	MCAST_LEAVE_GROUP		0
  MCAST_JOIN_SOURCE_GROUP	MCAST_JOIN_SOURCE_GROUP		(*1)
  MCAST_JOIN_SOURCE_GROUP	MCAST_LEAVE_SOURCE_GROUP	(*2)
  MCAST_JOIN_SOURCE_GROUP	MCAST_BLOCK_SOURCE		EINVAL
  MCAST_JOIN_SOURCE_GROUP	MCAST_UNBLOCK_SOURCE		EINVAL
  MCAST_BLOCK_SOURCE		MCAST_JOIN_GROUP		EADDRINUSE
  MCAST_BLOCK_SOURCE		MCAST_LEAVE_GROUP		0
  MCAST_BLOCK_SOURCE		MCAST_JOIN_SOURCE_GROUP		EINVAL
  MCAST_BLOCK_SOURCE		MCAST_LEAVE_SOURCE_GROUP	EINVAL
  MCAST_BLOCK_SOURCE		MCAST_BLOCK_SOURCE		(*1)
  MCAST_BLOCK_SOURCE		MCAST_UNBLOCK_SOURCE		(*2)

(*1) EADDRNOTAVAIL if source address is same of filtered one. Otherwise 0.
(*2) EADDRNOTAVAIL if source address is not same of filtered one. Otherwise 0.


http://planete.inria.fr/Hitoshi.Asaeda/mldv2/README.txt


The following steps apply for any-source applications:

    Use MCAST_JOIN_GROUP to join a group.
    Use MCAST_BLOCK_SOURCE to turn off a given source, if required.
    Use MCAST_UNBLOCK_SOURCE to re-allow a blocked source, if required.
    Use MCAST_LEAVE_GROUP to leave the group.

The following steps apply for controlled-source applications:

    Use MCAST_JOIN_SOURCE_GROUP to join each group/source pair.
    Use MCAST_LEAVE_SOURCE_GROUP to leave each group/source, or use MCAST_LEAVE_GROUP to leave all sources, if the same group address is used by all sources.

The following steps apply for any-source applications:

    Use IP_ADD_MEMBERSHIP to join a group (IPV6_ADD_MEMBERSHIP for IPv6).
    Use IP_BLOCK_SOURCE to turn off a given source, if required.
    Use IP_UNBLOCK_SOURCE to re-allow a blocked source, if required.
    Use IP_DROP_MEMBERSHIP to leave the group (IPV6_DROP_MEMBERSHIP for IPv6).

The following steps apply for controlled-source applications:

    Use IP_ADD_SOURCE_MEMBERSHIP to join each group/source pair.
    Use IP_DROP_SOURCE_MEMBERSHIP to leave each group/source, or use IP_DROP_MEMBERSHIP to leave all sources, if the same group address is used by all sources. 

http://msdn.microsoft.com/en-us/library/ms738558(VS.85).aspx