Reviewed-By: Wu Jiaxin <[email protected]> Best Regards! Jiaxin
> -----Original Message----- > From: edk2-devel [mailto:[email protected]] On Behalf Of > Zhang Lubo > Sent: Thursday, July 14, 2016 10:32 AM > To: [email protected] > Cc: Ye, Ting <[email protected]>; Fu, Siyuan <[email protected]>; Wu, > Jiaxin <[email protected]> > Subject: [edk2] [patch] ShellPkg: Fix issue about Ifconfig6 -r command. > > Follow the Shell Spec, when the interface name is Specified, we need to > refresh the Ipv6 configuration. > > Cc: Hegde Nagaraj P <[email protected]> > Cc: Ye Ting <[email protected]> > Cc: Fu Siyuan <[email protected]> > Cc: Wu Jiaxin <[email protected]> > Contributed-under: TianoCore Contribution Agreement 1.0 > Signed-off-by: Zhang Lubo <[email protected]> > --- > .../UefiShellNetwork2CommandsLib/Ifconfig6.c | 30 > +++++++++++++++++++--- > .../UefiShellNetwork2CommandsLib.uni | 2 ++ > 2 files changed, 28 insertions(+), 4 deletions(-) > > diff --git a/ShellPkg/Library/UefiShellNetwork2CommandsLib/Ifconfig6.c > b/ShellPkg/Library/UefiShellNetwork2CommandsLib/Ifconfig6.c > index 371b368..42c972e 100644 > --- a/ShellPkg/Library/UefiShellNetwork2CommandsLib/Ifconfig6.c > +++ b/ShellPkg/Library/UefiShellNetwork2CommandsLib/Ifconfig6.c > @@ -1055,58 +1055,80 @@ IfConfig6ShowInterfaceInfo ( > > Entry = Entry->ForwardLink; > } > > ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN > (STR_IFCONFIG6_INFO_BREAK), gShellNetwork2HiiHandle); > + ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN > + (STR_IFCONFIG6_INFO_NEWLINE), gShellNetwork2HiiHandle); > > return SHELL_SUCCESS; > } > > /** > The clean process of the IfConfig6 application. > > @param[in] IfList The pointer of IfList(interface list). > + @param[in] IfName The pointer of interface name. > > @retval SHELL_SUCCESS The IfConfig6 clean processed successfully. > @retval others The IfConfig6 clean process failed. > > **/ > SHELL_STATUS > IfConfig6ClearInterfaceInfo ( > - IN LIST_ENTRY *IfList > + IN LIST_ENTRY *IfList, > + IN CHAR16 *IfName > ) > { > EFI_STATUS Status; > SHELL_STATUS ShellStatus; > LIST_ENTRY *Entry; > IFCONFIG6_INTERFACE_CB *IfCb; > EFI_IP6_CONFIG_POLICY Policy; > > - Policy = Ip6ConfigPolicyAutomatic; > Entry = IfList->ForwardLink; > Status = EFI_SUCCESS; > ShellStatus = SHELL_SUCCESS; > > if (IsListEmpty (IfList)) { > ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN > (STR_IFCONFIG6_ERR_INVALID_INTERFACE), gShellNetwork2HiiHandle); > } > > // > - // Go through the interface list. > + // Go through the interface list.If the interface name is specified, > + then // need to refresh the configuration. > // > while (Entry != IfList) { > > IfCb = BASE_CR (Entry, IFCONFIG6_INTERFACE_CB, Link); > > + if ((IfName != NULL) && (StrCmp (IfName, IfCb->IfInfo->Name) == 0)) { > + Policy = Ip6ConfigPolicyManual; > + > + Status = IfCb->IfCfg->SetData ( > + IfCb->IfCfg, > + Ip6ConfigDataTypePolicy, > + sizeof (EFI_IP6_CONFIG_POLICY), > + &Policy > + ); > + if (EFI_ERROR (Status)) { > + ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_GEN_ERR_AD), > gShellNetwork2HiiHandle, L"ifconfig6"); > + ShellStatus = SHELL_ACCESS_DENIED; > + break; > + } > + } > + > + Policy = Ip6ConfigPolicyAutomatic; > + > Status = IfCb->IfCfg->SetData ( > IfCb->IfCfg, > Ip6ConfigDataTypePolicy, > sizeof (EFI_IP6_CONFIG_POLICY), > &Policy > ); > > if (EFI_ERROR (Status)) { > + ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_GEN_ERR_AD), > + gShellNetwork2HiiHandle, L"ifconfig6"); > ShellStatus = SHELL_ACCESS_DENIED; > break; > } > > Entry = Entry->ForwardLink; > @@ -1614,11 +1636,11 @@ IfConfig6 ( > case IfConfig6OpList: > ShellStatus = IfConfig6ShowInterfaceInfo (&Private->IfList); > break; > > case IfConfig6OpClear: > - ShellStatus = IfConfig6ClearInterfaceInfo (&Private->IfList); > + ShellStatus = IfConfig6ClearInterfaceInfo (&Private->IfList, > + Private->IfName); > break; > > case IfConfig6OpSet: > ShellStatus = IfConfig6SetInterfaceInfo (&Private->IfList, > Private->VarArg); > break; > diff --git > a/ShellPkg/Library/UefiShellNetwork2CommandsLib/UefiShellNetwork2Com > mandsLib.uni > b/ShellPkg/Library/UefiShellNetwork2CommandsLib/UefiShellNetwork2Com > mandsLib.uni > index 40e0284..ef441e1 100644 > --- > a/ShellPkg/Library/UefiShellNetwork2CommandsLib/UefiShellNetwork2Com > mandsLib.uni > +++ > b/ShellPkg/Library/UefiShellNetwork2CommandsLib/UefiShellNetwork2Com > +++ mandsLib.uni > @@ -21,10 +21,12 @@ > String definitions for UEFI Shell 2.0 network 2 commands **/ > > #langdef en-US "english" > > +#string STR_GEN_ERR_AD #language en-US "%H%s%N: Access > denied.\r\n" > + > #string STR_PING6_INVALID_IP #language en-US "%Ping6: Invalid > IP6 > address, %s\r\n" > #string STR_PING6_INVALID_INPUT #language en-US "%Ping6: Invalid > input, please type 'Ping6 -?'for help\r\n" > #string STR_PING6_INVALID_SEND_NUMBER #language en-US "%Ping6: > Invalid send number, %s\r\n" > #string STR_PING6_INVALID_BUFFER_SIZE #language en-US "%Ping6: > Invalid buffer size, %s\r\n" > #string STR_PING6_INVALID_SOURCE #language en-US "%Ping6: > Require source interface option\r\n" > -- > 1.9.5.msysgit.1 > > _______________________________________________ > edk2-devel mailing list > [email protected] > https://lists.01.org/mailman/listinfo/edk2-devel _______________________________________________ edk2-devel mailing list [email protected] https://lists.01.org/mailman/listinfo/edk2-devel

