NetworkPkg/Ip6Dxe/Ip6Driver.c File Reference


Functions

VOID EFIAPI IpSec2InstalledCallback (IN EFI_EVENT Event, IN VOID *Context)
EFI_STATUS EFIAPI Ip6DriverEntryPoint (IN EFI_HANDLE ImageHandle, IN EFI_SYSTEM_TABLE *SystemTable)
EFI_STATUS EFIAPI Ip6DriverBindingSupported (IN EFI_DRIVER_BINDING_PROTOCOL *This, IN EFI_HANDLE ControllerHandle, IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath)
EFI_STATUS Ip6CleanService (IN IP6_SERVICE *IpSb)
EFI_STATUS Ip6CreateService (IN EFI_HANDLE Controller, IN EFI_HANDLE ImageHandle, OUT IP6_SERVICE **Service)
EFI_STATUS EFIAPI Ip6DriverBindingStart (IN EFI_DRIVER_BINDING_PROTOCOL *This, IN EFI_HANDLE ControllerHandle, IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath)
EFI_STATUS EFIAPI Ip6DestroyChildEntryInHandleBuffer (IN LIST_ENTRY *Entry, IN VOID *Context)
EFI_STATUS EFIAPI Ip6DriverBindingStop (IN EFI_DRIVER_BINDING_PROTOCOL *This, IN EFI_HANDLE ControllerHandle, IN UINTN NumberOfChildren, IN EFI_HANDLE *ChildHandleBuffer)
EFI_STATUS EFIAPI Ip6ServiceBindingCreateChild (IN EFI_SERVICE_BINDING_PROTOCOL *This, IN EFI_HANDLE *ChildHandle)
EFI_STATUS EFIAPI Ip6ServiceBindingDestroyChild (IN EFI_SERVICE_BINDING_PROTOCOL *This, IN EFI_HANDLE ChildHandle)

Variables

EFI_DRIVER_BINDING_PROTOCOL gIp6DriverBinding
BOOLEAN mIpSec2Installed = FALSE

Detailed Description

The driver binding and service binding protocol for IP6 driver.

Copyright (c) 2009 - 2014, Intel Corporation. All rights reserved.
(C) Copyright 2015 Hewlett-Packard Development Company, L.P.

This program and the accompanying materials are licensed and made available under the terms and conditions of the BSD License which accompanies this distribution. The full text of the license may be found at http://opensource.org/licenses/bsd-license.php.

THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.


Function Documentation

EFI_STATUS Ip6CleanService ( IN IP6_SERVICE IpSb  ) 

Clean up an IP6 service binding instance. It releases all the resource allocated by the instance. The instance may be partly initialized, or partly destroyed. If a resource is destroyed, it is marked as that in case the destroy failed and being called again later.

Parameters:
[in] IpSb The IP6 service binding instance to clean up.
Return values:
EFI_SUCCESS The resource used by the instance are cleaned up.
Others Failed to clean up some of the resources.

References IP6_LINK_LOCAL_SCOPE, Ip6CleanAssembleTable(), Ip6CleanDefaultRouterList(), Ip6CleanInterface(), Ip6CleanPrefixListTable(), Ip6CleanRouteTable(), Ip6ConfigCleanInstance(), Ip6FreeNeighborEntry(), Ip6LeaveGroup(), and Ip6SetToAllNodeMulticast().

Referenced by Ip6CreateService(), Ip6DriverBindingStart(), and Ip6DriverBindingStop().

EFI_STATUS Ip6CreateService ( IN EFI_HANDLE  Controller,
IN EFI_HANDLE  ImageHandle,
OUT IP6_SERVICE **  Service 
)

Create a new IP6 driver service binding protocol.

Parameters:
[in] Controller The controller that has MNP service binding installed.
[in] ImageHandle The IP6 driver's image handle.
[out] Service The variable to receive the newly created IP6 service.
Return values:
EFI_OUT_OF_RESOURCES Failed to allocate some resources.
EFI_SUCCESS A new IP6 service binding private is created.

References _IP6_SERVICE::Assemble, _IP6_SERVICE::AutonomousPrefix, _IP6_SERVICE::BaseReachableTime, IP6_LINK_RX_TOKEN::CallBack, _IP6_SERVICE::Children, IP6_LINK_RX_TOKEN::Context, _IP6_SERVICE::Controller, _IP6_SERVICE::CurHopLimit, IP6_CONFIG_DATA_ITEM::Data, _IP6_CONFIG_INSTANCE::DataItem, IP6_CONFIG_DATA_ITEM::DataSize, _IP6_SERVICE::DefaultInterface, _IP6_SERVICE::DefaultRouterList, _IP6_SERVICE::Dhcp6NeedInfoRequest, _IP6_SERVICE::Dhcp6NeedStart, _IP6_SERVICE::FasterTimer, IP6_MLD_SERVICE_DATA::Groups, _IP6_SERVICE::Image, _IP6_SERVICE::InterfaceId, _IP6_SERVICE::InterfaceIdLen, _IP6_SERVICE::Interfaces, IP6_ETHER_PROTO, IP6_HOP_LIMIT, IP6_IF_ID_LEN, IP6_LINK_RX_SIGNATURE, IP6_MAX_RTR_SOLICITATIONS, IP6_MIN_LINK_MTU, IP6_REACHABLE_TIME, IP6_RETRANS_TIMER, IP6_SERVICE_SIGNATURE, IP6_SERVICE_UNSTARTED, Ip6CleanService(), Ip6ConfigInitInstance(), _IP6_SERVICE::Ip6ConfigInstance, Ip6CreateAssembleTable(), Ip6CreateInterface(), Ip6CreateRouteTable(), Ip6InitMld(), Ip6NdFasterTimerTicking(), Ip6OnFrameReceived(), Ip6ServiceBindingCreateChild(), Ip6ServiceBindingDestroyChild(), Ip6ServiceConfigMnp(), Ip6TimerTicking(), Ip6UpdateReachableTime(), _IP6_INTERFACE::Link, _IP6_SERVICE::LinkLocalAddr, _IP6_SERVICE::LinkLocalDadFail, _IP6_SERVICE::LinkLocalOk, _IP6_SERVICE::LinkMTU, _IP6_SERVICE::MacString, _IP6_SERVICE::MaxPacketSize, _IP6_SERVICE::MldCtrl, IP6_MLD_SERVICE_DATA::Mldv1QuerySeen, _IP6_SERVICE::Mnp, _IP6_SERVICE::MnpChildHandle, _IP6_SERVICE::MnpConfigData, IP6_LINK_RX_TOKEN::MnpToken, _IP6_SERVICE::NeighborTable, _IP6_SERVICE::NumChildren, _IP6_SERVICE::OldMaxPacketSize, _IP6_SERVICE::OnlinkPrefix, IP6_CONFIG_DATA::Ptr, _IP6_SERVICE::RecvRequest, _IP6_SERVICE::RetransTimer, _IP6_SERVICE::RoundRobin, _IP6_SERVICE::RouterAdvertiseReceived, _IP6_SERVICE::RouteTable, _IP6_SERVICE::ServiceBinding, IP6_CONFIG_DATA_ITEM::SetData, IP6_LINK_RX_TOKEN::Signature, _IP6_SERVICE::Signature, _IP6_SERVICE::SnpMode, _IP6_SERVICE::SolicitTimer, _IP6_SERVICE::State, _IP6_SERVICE::Ticks, and _IP6_SERVICE::Timer.

Referenced by Ip6DriverBindingStart().

EFI_STATUS EFIAPI Ip6DestroyChildEntryInHandleBuffer ( IN LIST_ENTRY *  Entry,
IN VOID *  Context 
)

Callback function which provided by user to remove one node in NetDestroyLinkList process.

Parameters:
[in] Entry The entry to be removed.
[in] Context Pointer to the callback context corresponds to the Context in NetDestroyLinkList.
Return values:
EFI_SUCCESS The entry has been removed successfully.
Others Fail to remove the entry.

References _IP6_PROTOCOL::Handle, and IP6_PROTOCOL_SIGNATURE.

Referenced by Ip6DriverBindingStop().

EFI_STATUS EFIAPI Ip6DriverBindingStart ( IN EFI_DRIVER_BINDING_PROTOCOL *  This,
IN EFI_HANDLE  ControllerHandle,
IN EFI_DEVICE_PATH_PROTOCOL *  RemainingDevicePath 
)

Start this driver on ControllerHandle.

Parameters:
[in] This Protocol instance pointer.
[in] ControllerHandle Handle of device to bind driver to.
[in] RemainingDevicePath Optional parameter used to pick a specific child device to start.
Return values:
EFI_SUCCES This driver is added to ControllerHandle.
EFI_ALREADY_STARTED This driver is already running on ControllerHandle.
other This driver does not support this device.

References _IP6_SERVICE::FasterTimer, IP6_ONE_SECOND_IN_MS, IP6_TIMER_INTERVAL_IN_MS, Ip6AcceptFrame(), Ip6CleanService(), _IP6_CONFIG_INSTANCE::Ip6Config, _IP6_SERVICE::Ip6ConfigInstance, Ip6CreateService(), Ip6ReceiveFrame(), mIp6Id, _IP6_SERVICE::ServiceBinding, and _IP6_SERVICE::Timer.

EFI_STATUS EFIAPI Ip6DriverBindingStop ( IN EFI_DRIVER_BINDING_PROTOCOL *  This,
IN EFI_HANDLE  ControllerHandle,
IN UINTN  NumberOfChildren,
IN EFI_HANDLE *  ChildHandleBuffer 
)

Stop this driver on ControllerHandle.

Parameters:
[in] This Protocol instance pointer.
[in] ControllerHandle Handle of device to stop driver on.
[in] NumberOfChildren Number of Handles in ChildHandleBuffer. If number of children is zero, stop the entire bus driver.
[in] ChildHandleBuffer An array of child handles to be freed. May be NULL if NumberOfChildren is 0.
Return values:
EFI_SUCCESS The device was stopped.
EFI_DEVICE_ERROR The device could not be stopped due to a device error.

References IP6_DESTROY_CHILD_IN_HANDLE_BUF_CONTEXT::ChildHandleBuffer, _IP6_SERVICE::Children, _IP6_CONFIG_INSTANCE::Dhcp6Event, IP6_SERVICE_DESTROY, IP6_SERVICE_FROM_PROTOCOL, Ip6CleanService(), _IP6_CONFIG_INSTANCE::Ip6Config, Ip6ConfigDestroyDhcp6(), _IP6_SERVICE::Ip6ConfigInstance, Ip6DestroyChildEntryInHandleBuffer(), IP6_DESTROY_CHILD_IN_HANDLE_BUF_CONTEXT::NumberOfChildren, IP6_DESTROY_CHILD_IN_HANDLE_BUF_CONTEXT::ServiceBinding, and _IP6_SERVICE::State.

EFI_STATUS EFIAPI Ip6DriverBindingSupported ( IN EFI_DRIVER_BINDING_PROTOCOL *  This,
IN EFI_HANDLE  ControllerHandle,
IN EFI_DEVICE_PATH_PROTOCOL *  RemainingDevicePath 
)

Test to see if this driver supports ControllerHandle.

Parameters:
[in] This Protocol instance pointer.
[in] ControllerHandle Handle of device to test.
[in] RemainingDevicePath Optional parameter use to pick a specific child device to start.
Return values:
EFI_SUCCESS This driver supports this device.
EFI_ALREADY_STARTED This driver is already running on this device.
other This driver does not support this device.

EFI_STATUS EFIAPI Ip6DriverEntryPoint ( IN EFI_HANDLE  ImageHandle,
IN EFI_SYSTEM_TABLE *  SystemTable 
)

This is the declaration of an EFI image entry point. This entry point is the same for UEFI Applications, UEFI OS Loaders, and UEFI Drivers including both device drivers and bus drivers.

The entry point for IP6 driver which installs the driver binding and component name protocol on its image.

Parameters:
[in] ImageHandle The firmware allocated handle for the UEFI image.
[in] SystemTable A pointer to the EFI System Table.
Return values:
EFI_SUCCESS The operation completed successfully.
EFI_OUT_OF_RESOURCES The request could not be completed due to a lack of resources.

References gIp6ComponentName, gIp6ComponentName2, gIp6DriverBinding, and IpSec2InstalledCallback().

EFI_STATUS EFIAPI Ip6ServiceBindingCreateChild ( IN EFI_SERVICE_BINDING_PROTOCOL *  This,
IN EFI_HANDLE *  ChildHandle 
)

Creates a child handle with a set of I/O services.

Parameters:
[in] This Protocol instance pointer.
[in] ChildHandle Pointer to the handle of the child to create. If it is NULL, then a new handle is created. If it is not NULL, then the I/O services are added to the existing child handle.
Return values:
EFI_SUCCES The child handle was created with the I/O services.
EFI_OUT_OF_RESOURCES There are not enough resources availabe to create the child.
other The child handle was not created.

References _IP6_SERVICE::Children, gIp6DriverBinding, _IP6_PROTOCOL::Handle, IP6_SERVICE_FROM_PROTOCOL, Ip6CleanProtocol(), Ip6InitProtocol(), _IP6_PROTOCOL::Ip6Proto, _IP6_PROTOCOL::Link, _IP6_SERVICE::LinkLocalDadFail, _IP6_SERVICE::MnpChildHandle, and _IP6_SERVICE::NumChildren.

Referenced by Ip6CreateService().

EFI_STATUS EFIAPI Ip6ServiceBindingDestroyChild ( IN EFI_SERVICE_BINDING_PROTOCOL *  This,
IN EFI_HANDLE  ChildHandle 
)

Destroys a child handle with a set of I/O services.

Parameters:
[in] This Protocol instance pointer.
[in] ChildHandle Handle of the child to destroy.
Return values:
EFI_SUCCES The I/O services were removed from the child handle.
EFI_UNSUPPORTED The child handle does not support the I/O services that are being removed.
EFI_INVALID_PARAMETER Child handle is NULL.
EFI_ACCESS_DENIED The child handle could not be destroyed because its I/O services are being used.
other The child handle was not destroyed.

References gIp6DriverBinding, _IP6_PROTOCOL::InDestroy, IP6_INSTANCE_FROM_PROTOCOL, IP6_SERVICE_FROM_PROTOCOL, Ip6CleanProtocol(), _IP6_PROTOCOL::Ip6Proto, _IP6_PROTOCOL::Link, _IP6_SERVICE::MnpChildHandle, _IP6_SERVICE::NumChildren, and _IP6_PROTOCOL::Service.

Referenced by Ip6CreateService().

VOID EFIAPI IpSec2InstalledCallback ( IN EFI_EVENT  Event,
IN VOID *  Context 
)

Callback function for IpSec2 Protocol install.

Parameters:
[in] Event Event whose notification function is being invoked
[in] Context Pointer to the notification function's context

References mIpSec2Installed.

Referenced by Ip6DriverEntryPoint().


Variable Documentation

EFI_DRIVER_BINDING_PROTOCOL gIp6DriverBinding

BOOLEAN mIpSec2Installed = FALSE


Generated on Mon Sep 28 08:49:05 2015 for NetworkPkg[ALL] by  doxygen 1.5.7.1