VirtualBox

Ignore:
Timestamp:
Apr 14, 2023 3:17:44 PM (22 months ago)
Author:
vboxsync
Message:

Devices/EFI/FirmwareNew: Update to edk2-stable202302 and make it build, bugref:4643

Location:
trunk/src/VBox/Devices/EFI/FirmwareNew
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Devices/EFI/FirmwareNew

  • trunk/src/VBox/Devices/EFI/FirmwareNew/NetworkPkg/Mtftp6Dxe/Mtftp6Rrq.c

    r85718 r99404  
    99
    1010#include "Mtftp6Impl.h"
    11 
    1211
    1312/**
     
    2423EFI_STATUS
    2524Mtftp6RrqSendAck (
    26   IN MTFTP6_INSTANCE        *Instance,
    27   IN UINT16                 BlockNum
     25  IN MTFTP6_INSTANCE  *Instance,
     26  IN UINT16           BlockNum
    2827  )
    2928{
    30   EFI_MTFTP6_PACKET         *Ack;
    31   NET_BUF                   *Packet;
    32   EFI_STATUS                Status;
     29  EFI_MTFTP6_PACKET  *Ack;
     30  NET_BUF            *Packet;
     31  EFI_STATUS         Status;
    3332
    3433  Status = EFI_SUCCESS;
     
    4342  }
    4443
    45   Ack = (EFI_MTFTP6_PACKET *) NetbufAllocSpace (
    46                                 Packet,
    47                                 sizeof (EFI_MTFTP6_ACK_HEADER),
    48                                 FALSE
    49                                 );
     44  Ack = (EFI_MTFTP6_PACKET *)NetbufAllocSpace (
     45                               Packet,
     46                               sizeof (EFI_MTFTP6_ACK_HEADER),
     47                               FALSE
     48                               );
    5049  ASSERT (Ack != NULL);
    5150
    52   Ack->Ack.OpCode    = HTONS (EFI_MTFTP6_OPCODE_ACK);
    53   Ack->Ack.Block[0]  = HTONS (BlockNum);
     51  Ack->Ack.OpCode   = HTONS (EFI_MTFTP6_OPCODE_ACK);
     52  Ack->Ack.Block[0] = HTONS (BlockNum);
    5453
    5554  //
    5655  // Reset current retry count of the instance.
    5756  //
    58   Instance->CurRetry = 0;
     57  Instance->CurRetry   = 0;
    5958  Instance->LastPacket = Packet;
    6059
     
    6665  return Status;
    6766}
    68 
    6967
    7068/**
     
    8684EFI_STATUS
    8785Mtftp6RrqSaveBlock (
    88   IN  MTFTP6_INSTANCE       *Instance,
    89   IN  EFI_MTFTP6_PACKET     *Packet,
    90   IN  UINT32                Len,
    91   OUT NET_BUF               **UdpPacket
     86  IN  MTFTP6_INSTANCE    *Instance,
     87  IN  EFI_MTFTP6_PACKET  *Packet,
     88  IN  UINT32             Len,
     89  OUT NET_BUF            **UdpPacket
    9290  )
    9391{
    94   EFI_MTFTP6_TOKEN          *Token;
    95   EFI_STATUS                Status;
    96   UINT16                    Block;
    97   UINT64                    Start;
    98   UINT32                    DataLen;
    99   UINT64                    BlockCounter;
    100   BOOLEAN                   Completed;
     92  EFI_MTFTP6_TOKEN  *Token;
     93  EFI_STATUS        Status;
     94  UINT16            Block;
     95  UINT64            Start;
     96  UINT32            DataLen;
     97  UINT64            BlockCounter;
     98  BOOLEAN           Completed;
    10199
    102100  Completed = FALSE;
     
    109107  //
    110108  if (DataLen < Instance->BlkSize) {
    111     Completed = TRUE;
     109    Completed         = TRUE;
    112110    Instance->LastBlk = Block;
    113111    Mtftp6SetLastBlockNum (&Instance->BlkList, Block);
     
    133131    // Callback to the check packet routine with the received packet.
    134132    //
    135     Status = Token->CheckPacket (&Instance->Mtftp6, Token, (UINT16) Len, Packet);
     133    Status = Token->CheckPacket (&Instance->Mtftp6, Token, (UINT16)Len, Packet);
    136134
    137135    if (EFI_ERROR (Status)) {
     
    148146        Instance,
    149147        EFI_MTFTP6_ERRORCODE_ILLEGAL_OPERATION,
    150         (UINT8 *) "User aborted download"
     148        (UINT8 *)"User aborted download"
    151149        );
    152150
     
    156154
    157155  if (Token->Buffer != NULL) {
    158 
    159156    Start = MultU64x32 (BlockCounter - 1, Instance->BlkSize);
    160157    if (Start + DataLen <= Token->BufferSize) {
    161       CopyMem ((UINT8 *) Token->Buffer + Start, Packet->Data.Data, DataLen);
     158      CopyMem ((UINT8 *)Token->Buffer + Start, Packet->Data.Data, DataLen);
    162159      //
    163160      // Update the file size when received the last block
     
    186183        Instance,
    187184        EFI_MTFTP6_ERRORCODE_DISK_FULL,
    188         (UINT8 *) "User provided memory block is too small"
     185        (UINT8 *)"User provided memory block is too small"
    189186        );
    190187
     
    195192  return EFI_SUCCESS;
    196193}
    197 
    198194
    199195/**
     
    215211EFI_STATUS
    216212Mtftp6RrqHandleData (
    217   IN  MTFTP6_INSTANCE       *Instance,
    218   IN  EFI_MTFTP6_PACKET     *Packet,
    219   IN  UINT32                Len,
    220   OUT NET_BUF               **UdpPacket,
    221   OUT BOOLEAN               *IsCompleted
     213  IN  MTFTP6_INSTANCE    *Instance,
     214  IN  EFI_MTFTP6_PACKET  *Packet,
     215  IN  UINT32             Len,
     216  OUT NET_BUF            **UdpPacket,
     217  OUT BOOLEAN            *IsCompleted
    222218  )
    223219{
    224   EFI_STATUS                Status;
    225   UINT16                    BlockNum;
    226   INTN                      Expected;
     220  EFI_STATUS  Status;
     221  UINT16      BlockNum;
     222  INTN        Expected;
    227223
    228224  *IsCompleted = FALSE;
     
    249245    // If Expected is 0, (UINT16) (Expected - 1) is also the expected Ack number (65535).
    250246    //
    251     return Mtftp6RrqSendAck (Instance,  (UINT16) (Expected - 1));
     247    return Mtftp6RrqSendAck (Instance, (UINT16)(Expected - 1));
    252248  }
    253249
     
    261257  // Record the total received and saved block number.
    262258  //
    263   Instance->TotalBlock ++;
     259  Instance->TotalBlock++;
    264260
    265261  //
     
    278274  Expected = Mtftp6GetNextBlockNum (&Instance->BlkList);
    279275
    280   if (Instance->IsMaster || Expected < 0) {
     276  if (Instance->IsMaster || (Expected < 0)) {
    281277    if (Expected < 0) {
    282278      //
     
    288284      BlockNum     = Instance->LastBlk;
    289285      *IsCompleted = TRUE;
    290 
    291286    } else {
    292       BlockNum     = (UINT16) (Expected - 1);
    293     }
     287      BlockNum = (UINT16)(Expected - 1);
     288    }
     289
    294290    //
    295291    // Free the received packet before send new packet in ReceiveNotify,
     
    299295    *UdpPacket = NULL;
    300296
    301     if (Instance->WindowSize == (Instance->TotalBlock - Instance->AckedBlock) || Expected < 0) {
     297    if ((Instance->WindowSize == (Instance->TotalBlock - Instance->AckedBlock)) || (Expected < 0)) {
    302298      Status = Mtftp6RrqSendAck (Instance, BlockNum);
    303299    }
     
    306302  return Status;
    307303}
    308 
    309304
    310305/**
     
    326321BOOLEAN
    327322Mtftp6RrqOackValid (
    328   IN MTFTP6_INSTANCE           *Instance,
    329   IN MTFTP6_EXT_OPTION_INFO    *ReplyInfo,
    330   IN MTFTP6_EXT_OPTION_INFO    *RequestInfo
     323  IN MTFTP6_INSTANCE         *Instance,
     324  IN MTFTP6_EXT_OPTION_INFO  *ReplyInfo,
     325  IN MTFTP6_EXT_OPTION_INFO  *RequestInfo
    331326  )
    332327{
     
    345340      (((ReplyInfo->BitMap & MTFTP6_OPT_WINDOWSIZE_BIT) != 0) && (ReplyInfo->BlkSize > RequestInfo->BlkSize)) ||
    346341      (((ReplyInfo->BitMap & MTFTP6_OPT_TIMEOUT_BIT) != 0) && (ReplyInfo->Timeout != RequestInfo->Timeout))
    347      ) {
     342      )
     343  {
    348344    return FALSE;
    349345  }
     
    355351  //
    356352  if (((ReplyInfo->BitMap & MTFTP6_OPT_MCAST_BIT) != 0) && !NetIp6IsUnspecifiedAddr (&Instance->McastIp)) {
    357 
    358     if (!NetIp6IsUnspecifiedAddr (&ReplyInfo->McastIp) && CompareMem (
    359                                                             &ReplyInfo->McastIp,
    360                                                             &Instance->McastIp,
    361                                                             sizeof (EFI_IPv6_ADDRESS)
    362                                                             ) != 0) {
     353    if (!NetIp6IsUnspecifiedAddr (&ReplyInfo->McastIp) && (CompareMem (
     354                                                             &ReplyInfo->McastIp,
     355                                                             &Instance->McastIp,
     356                                                             sizeof (EFI_IPv6_ADDRESS)
     357                                                             ) != 0))
     358    {
    363359      return FALSE;
    364360    }
     
    371367  return TRUE;
    372368}
    373 
    374369
    375370/**
     
    386381EFIAPI
    387382Mtftp6RrqConfigMcastUdpIo (
    388   IN UDP_IO                 *McastIo,
    389   IN VOID                   *Context
     383  IN UDP_IO  *McastIo,
     384  IN VOID    *Context
    390385  )
    391386{
    392   EFI_STATUS                Status;
    393   EFI_UDP6_PROTOCOL         *Udp6;
    394   EFI_UDP6_CONFIG_DATA      *Udp6Cfg;
    395   EFI_IPv6_ADDRESS          Group;
    396   MTFTP6_INSTANCE           *Instance;
     387  EFI_STATUS            Status;
     388  EFI_UDP6_PROTOCOL     *Udp6;
     389  EFI_UDP6_CONFIG_DATA  *Udp6Cfg;
     390  EFI_IPv6_ADDRESS      Group;
     391  MTFTP6_INSTANCE       *Instance;
    397392
    398393  Udp6     = McastIo->Protocol.Udp6;
    399394  Udp6Cfg  = &(McastIo->Config.Udp6);
    400   Instance = (MTFTP6_INSTANCE *) Context;
     395  Instance = (MTFTP6_INSTANCE *)Context;
    401396
    402397  //
     
    438433}
    439434
    440 
    441435/**
    442436  Process the OACK packet for Rrq.
     
    456450EFI_STATUS
    457451Mtftp6RrqHandleOack (
    458   IN  MTFTP6_INSTANCE       *Instance,
    459   IN  EFI_MTFTP6_PACKET     *Packet,
    460   IN  UINT32                Len,
    461   OUT NET_BUF               **UdpPacket,
    462   OUT BOOLEAN               *IsCompleted
     452  IN  MTFTP6_INSTANCE    *Instance,
     453  IN  EFI_MTFTP6_PACKET  *Packet,
     454  IN  UINT32             Len,
     455  OUT NET_BUF            **UdpPacket,
     456  OUT BOOLEAN            *IsCompleted
    463457  )
    464458{
    465   EFI_MTFTP6_OPTION         *Options;
    466   UINT32                    Count;
    467   MTFTP6_EXT_OPTION_INFO    ExtInfo;
    468   EFI_STATUS                Status;
    469   INTN                      Expected;
    470   EFI_UDP6_PROTOCOL         *Udp6;
     459  EFI_MTFTP6_OPTION       *Options;
     460  UINT32                  Count;
     461  MTFTP6_EXT_OPTION_INFO  ExtInfo;
     462  EFI_STATUS              Status;
     463  INTN                    Expected;
     464  EFI_UDP6_PROTOCOL       *Udp6;
    471465
    472466  *IsCompleted = FALSE;
    473   Options = NULL;
     467  Options      = NULL;
    474468
    475469  //
     
    480474  ASSERT (Expected != -1);
    481475
    482   if (Instance->IsMaster && Expected != 1) {
     476  if (Instance->IsMaster && (Expected != 1)) {
    483477    return EFI_SUCCESS;
    484478  }
     
    494488    return Status;
    495489  }
     490
    496491  ASSERT (Options != NULL);
    497492
     
    518513        Instance,
    519514        EFI_MTFTP6_ERRORCODE_ILLEGAL_OPERATION,
    520         (UINT8 *) "Malformatted OACK packet"
     515        (UINT8 *)"Malformatted OACK packet"
    521516        );
    522517    }
     
    526521
    527522  if ((ExtInfo.BitMap & MTFTP6_OPT_MCAST_BIT) != 0) {
    528 
    529523    //
    530524    // Save the multicast info. Always update the Master, only update the
     
    535529
    536530    if (NetIp6IsUnspecifiedAddr (&Instance->McastIp)) {
    537       if (NetIp6IsUnspecifiedAddr (&ExtInfo.McastIp) || ExtInfo.McastPort == 0) {
     531      if (NetIp6IsUnspecifiedAddr (&ExtInfo.McastIp) || (ExtInfo.McastPort == 0)) {
    538532        //
    539533        // Free the received packet before send new packet in ReceiveNotify,
     
    548542          Instance,
    549543          EFI_MTFTP6_ERRORCODE_ILLEGAL_OPERATION,
    550           (UINT8 *) "Illegal multicast setting"
     544          (UINT8 *)"Illegal multicast setting"
    551545          );
    552546
     
    563557        );
    564558
    565       Instance->McastPort  = ExtInfo.McastPort;
     559      Instance->McastPort = ExtInfo.McastPort;
    566560      if (Instance->McastUdpIo == NULL) {
    567561        Instance->McastUdpIo = UdpIoCreateIo (
     
    576570                          Instance->McastUdpIo->UdpHandle,
    577571                          &gEfiUdp6ProtocolGuid,
    578                           (VOID **) &Udp6,
     572                          (VOID **)&Udp6,
    579573                          Instance->Service->Image,
    580574                          Instance->Handle,
     
    613607          Instance,
    614608          EFI_MTFTP6_ERRORCODE_ACCESS_VIOLATION,
    615           (UINT8 *) "Failed to create socket to receive multicast packet"
     609          (UINT8 *)"Failed to create socket to receive multicast packet"
    616610          );
    617611
     
    634628      }
    635629    }
    636 
    637630  } else {
    638 
    639631    Instance->IsMaster = TRUE;
    640632
     
    662654  // or tell the server we want to receive the Expected block.
    663655  //
    664   return Mtftp6RrqSendAck (Instance, (UINT16) (Expected - 1));
     656  return Mtftp6RrqSendAck (Instance, (UINT16)(Expected - 1));
    665657}
    666 
    667658
    668659/**
     
    678669EFIAPI
    679670Mtftp6RrqInput (
    680   IN NET_BUF                *UdpPacket,
    681   IN UDP_END_POINT          *UdpEpt,
    682   IN EFI_STATUS             IoStatus,
    683   IN VOID                   *Context
     671  IN NET_BUF        *UdpPacket,
     672  IN UDP_END_POINT  *UdpEpt,
     673  IN EFI_STATUS     IoStatus,
     674  IN VOID           *Context
    684675  )
    685676{
    686   MTFTP6_INSTANCE           *Instance;
    687   EFI_MTFTP6_PACKET         *Packet;
    688   BOOLEAN                   IsCompleted;
    689   BOOLEAN                   IsMcast;
    690   EFI_STATUS                Status;
    691   UINT16                    Opcode;
    692   UINT32                    TotalNum;
    693   UINT32                    Len;
    694 
    695   Instance = (MTFTP6_INSTANCE *) Context;
     677  MTFTP6_INSTANCE    *Instance;
     678  EFI_MTFTP6_PACKET  *Packet;
     679  BOOLEAN            IsCompleted;
     680  BOOLEAN            IsMcast;
     681  EFI_STATUS         Status;
     682  UINT16             Opcode;
     683  UINT32             TotalNum;
     684  UINT32             Len;
     685
     686  Instance = (MTFTP6_INSTANCE *)Context;
    696687
    697688  NET_CHECK_SIGNATURE (Instance, MTFTP6_INSTANCE_SIGNATURE);
     
    724715        &Instance->McastIp,
    725716        sizeof (EFI_IPv6_ADDRESS)
    726         ) == 0) {
     717        ) == 0)
     718  {
    727719    IsMcast = TRUE;
    728720  } else {
     
    764756    }
    765757
    766     NetbufCopy (UdpPacket, 0, Len, (UINT8 *) Packet);
    767 
     758    NetbufCopy (UdpPacket, 0, Len, (UINT8 *)Packet);
    768759  } else {
    769     Packet = (EFI_MTFTP6_PACKET *) NetbufGetByte (UdpPacket, 0, NULL);
     760    Packet = (EFI_MTFTP6_PACKET *)NetbufGetByte (UdpPacket, 0, NULL);
    770761    ASSERT (Packet != NULL);
    771762  }
     
    778769  //
    779770  if ((Instance->Token->CheckPacket != NULL) &&
    780       (Opcode == EFI_MTFTP6_OPCODE_OACK || Opcode == EFI_MTFTP6_OPCODE_ERROR)
    781       ) {
    782 
     771      ((Opcode == EFI_MTFTP6_OPCODE_OACK) || (Opcode == EFI_MTFTP6_OPCODE_ERROR))
     772      )
     773  {
    783774    Status = Instance->Token->CheckPacket (
    784775                                &Instance->Mtftp6,
    785776                                Instance->Token,
    786                                 (UINT16) Len,
     777                                (UINT16)Len,
    787778                                Packet
    788779                                );
     
    805796          Instance,
    806797          EFI_MTFTP6_ERRORCODE_REQUEST_DENIED,
    807           (UINT8 *) "User aborted the transfer"
     798          (UINT8 *)"User aborted the transfer"
    808799          );
    809800      }
     
    818809  //
    819810  switch (Opcode) {
    820   case EFI_MTFTP6_OPCODE_DATA:
    821     if ((Len > (UINT32) (MTFTP6_DATA_HEAD_LEN + Instance->BlkSize)) || (Len < (UINT32) MTFTP6_DATA_HEAD_LEN)) {
    822       goto ON_EXIT;
    823     }
    824     //
    825     // Handle the data packet of Rrq.
    826     //
    827     Status = Mtftp6RrqHandleData (
    828                Instance,
    829                Packet,
    830                Len,
    831                &UdpPacket,
    832                &IsCompleted
    833                );
    834     break;
    835 
    836   case EFI_MTFTP6_OPCODE_OACK:
    837     if (IsMcast || Len <= MTFTP6_OPCODE_LEN) {
    838       goto ON_EXIT;
    839     }
    840     //
    841     // Handle the Oack packet of Rrq.
    842     //
    843     Status = Mtftp6RrqHandleOack (
    844                Instance,
    845                Packet,
    846                Len,
    847                &UdpPacket,
    848                &IsCompleted
    849                );
    850     break;
    851 
    852   default:
    853     //
    854     // Drop and return error if received error message.
    855     //
    856     Status = EFI_TFTP_ERROR;
    857     break;
     811    case EFI_MTFTP6_OPCODE_DATA:
     812      if ((Len > (UINT32)(MTFTP6_DATA_HEAD_LEN + Instance->BlkSize)) || (Len < (UINT32)MTFTP6_DATA_HEAD_LEN)) {
     813        goto ON_EXIT;
     814      }
     815
     816      //
     817      // Handle the data packet of Rrq.
     818      //
     819      Status = Mtftp6RrqHandleData (
     820                 Instance,
     821                 Packet,
     822                 Len,
     823                 &UdpPacket,
     824                 &IsCompleted
     825                 );
     826      break;
     827
     828    case EFI_MTFTP6_OPCODE_OACK:
     829      if (IsMcast || (Len <= MTFTP6_OPCODE_LEN)) {
     830        goto ON_EXIT;
     831      }
     832
     833      //
     834      // Handle the Oack packet of Rrq.
     835      //
     836      Status = Mtftp6RrqHandleOack (
     837                 Instance,
     838                 Packet,
     839                 Len,
     840                 &UdpPacket,
     841                 &IsCompleted
     842                 );
     843      break;
     844
     845    default:
     846      //
     847      // Drop and return error if received error message.
     848      //
     849      Status = EFI_TFTP_ERROR;
     850      break;
    858851  }
    859852
     
    863856  // receive, otherwise end the session.
    864857  //
    865   if (Packet != NULL && TotalNum > 1) {
     858  if ((Packet != NULL) && (TotalNum > 1)) {
    866859    FreePool (Packet);
    867860  }
     861
    868862  if (UdpPacket != NULL) {
    869863    NetbufFree (UdpPacket);
    870864  }
     865
    871866  if (!EFI_ERROR (Status) && !IsCompleted) {
    872867    if (IsMcast) {
     
    886881    }
    887882  }
     883
    888884  //
    889885  // Clean up the current session if failed to continue.
     
    893889  }
    894890}
    895 
    896891
    897892/**
     
    909904EFI_STATUS
    910905Mtftp6RrqStart (
    911   IN MTFTP6_INSTANCE        *Instance,
    912   IN UINT16                 Operation
     906  IN MTFTP6_INSTANCE  *Instance,
     907  IN UINT16           Operation
    913908  )
    914909{
    915   EFI_STATUS                Status;
     910  EFI_STATUS  Status;
    916911
    917912  //
     
    940935           );
    941936}
    942 
Note: See TracChangeset for help on using the changeset viewer.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette