}\r
\r
\r
-/**\r
- Configure the low level protocol to join a multicast group for\r
- this socket's connection.\r
-\r
- @param Sock Pointer to the socket of the connection to join the\r
- specific multicast group.\r
- @param GroupInfo Pointer to the multicast group info.\r
-\r
- @retval EFI_SUCCESS The configuration is done successfully.\r
- @retval EFI_ACCESS_DENIED Failed to get the lock to access the socket.\r
- @retval EFI_NOT_STARTED The socket is not configured.\r
-\r
-**/\r
-EFI_STATUS\r
-SockGroup (\r
- IN SOCKET *Sock,\r
- IN VOID *GroupInfo\r
- )\r
-{\r
- EFI_STATUS Status;\r
-\r
- Status = EfiAcquireLockOrFail (&(Sock->Lock));\r
-\r
- if (EFI_ERROR (Status)) {\r
\r
- DEBUG ((EFI_D_ERROR, "SockGroup: Get the access for socket"\r
- " failed with %r", Status));\r
-\r
- return EFI_ACCESS_DENIED;\r
- }\r
-\r
- if (SOCK_IS_UNCONFIGURED (Sock)) {\r
- Status = EFI_NOT_STARTED;\r
- goto Exit;\r
- }\r
-\r
- Status = Sock->ProtoHandler (Sock, SOCK_GROUP, GroupInfo);\r
-\r
-Exit:\r
- EfiReleaseLock (&(Sock->Lock));\r
- return Status;\r
-}\r
\r
\r
/**\r