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/Mtftp4Dxe/Mtftp4Rrq.c

    r85718 r99404  
    88**/
    99
    10 
    1110#include "Mtftp4Impl.h"
    12 
    1311
    1412/**
     
    2422EFIAPI
    2523Mtftp4RrqInput (
    26   IN NET_BUF                *UdpPacket,
    27   IN UDP_END_POINT          *EndPoint,
    28   IN EFI_STATUS             IoStatus,
    29   IN VOID                   *Context
     24  IN NET_BUF        *UdpPacket,
     25  IN UDP_END_POINT  *EndPoint,
     26  IN EFI_STATUS     IoStatus,
     27  IN VOID           *Context
    3028  );
    31 
    3229
    3330/**
     
    4744EFI_STATUS
    4845Mtftp4RrqStart (
    49   IN MTFTP4_PROTOCOL        *Instance,
    50   IN UINT16                 Operation
     46  IN MTFTP4_PROTOCOL  *Instance,
     47  IN UINT16           Operation
    5148  )
    5249{
    53   EFI_STATUS                Status;
     50  EFI_STATUS  Status;
    5451
    5552  //
     
    7471}
    7572
    76 
    7773/**
    7874  Build and send a ACK packet for the download session.
     
    8884EFI_STATUS
    8985Mtftp4RrqSendAck (
    90   IN MTFTP4_PROTOCOL        *Instance,
    91   IN UINT16                 BlkNo
     86  IN MTFTP4_PROTOCOL  *Instance,
     87  IN UINT16           BlkNo
    9288  )
    9389{
    94   EFI_MTFTP4_PACKET         *Ack;
    95   NET_BUF                   *Packet;
    96   EFI_STATUS                Status;
     90  EFI_MTFTP4_PACKET  *Ack;
     91  NET_BUF            *Packet;
     92  EFI_STATUS         Status;
    9793
    9894  Status = EFI_SUCCESS;
     
    10399  }
    104100
    105   Ack = (EFI_MTFTP4_PACKET *) NetbufAllocSpace (
    106                                 Packet,
    107                                 sizeof (EFI_MTFTP4_ACK_HEADER),
    108                                 FALSE
    109                                 );
     101  Ack = (EFI_MTFTP4_PACKET *)NetbufAllocSpace (
     102                               Packet,
     103                               sizeof (EFI_MTFTP4_ACK_HEADER),
     104                               FALSE
     105                               );
    110106  ASSERT (Ack != NULL);
    111107
     
    120116  return Status;
    121117}
    122 
    123118
    124119/**
     
    139134EFI_STATUS
    140135Mtftp4RrqSaveBlock (
    141   IN OUT MTFTP4_PROTOCOL        *Instance,
    142   IN     EFI_MTFTP4_PACKET      *Packet,
    143   IN     UINT32                 Len
     136  IN OUT MTFTP4_PROTOCOL    *Instance,
     137  IN     EFI_MTFTP4_PACKET  *Packet,
     138  IN     UINT32             Len
    144139  )
    145140{
    146   EFI_MTFTP4_TOKEN          *Token;
    147   EFI_STATUS                Status;
    148   UINT16                    Block;
    149   UINT64                    Start;
    150   UINT32                    DataLen;
    151   UINT64                    BlockCounter;
    152   BOOLEAN                   Completed;
     141  EFI_MTFTP4_TOKEN  *Token;
     142  EFI_STATUS        Status;
     143  UINT16            Block;
     144  UINT64            Start;
     145  UINT32            DataLen;
     146  UINT64            BlockCounter;
     147  BOOLEAN           Completed;
    153148
    154149  Completed = FALSE;
     
    161156  //
    162157  if (DataLen < Instance->BlkSize) {
    163     Completed = TRUE;
     158    Completed           = TRUE;
    164159    Instance->LastBlock = Block;
    165160    Mtftp4SetLastBlockNum (&Instance->Blocks, Block);
     
    182177
    183178  if (Token->CheckPacket != NULL) {
    184     Status = Token->CheckPacket (&Instance->Mtftp4, Token, (UINT16) Len, Packet);
     179    Status = Token->CheckPacket (&Instance->Mtftp4, Token, (UINT16)Len, Packet);
    185180
    186181    if (EFI_ERROR (Status)) {
     
    188183        Instance,
    189184        EFI_MTFTP4_ERRORCODE_ILLEGAL_OPERATION,
    190         (UINT8 *) "User aborted download"
     185        (UINT8 *)"User aborted download"
    191186        );
    192187
     
    196191
    197192  if (Token->Buffer != NULL) {
    198      Start = MultU64x32 (BlockCounter - 1, Instance->BlkSize);
     193    Start = MultU64x32 (BlockCounter - 1, Instance->BlkSize);
    199194
    200195    if (Start + DataLen <= Token->BufferSize) {
    201       CopyMem ((UINT8 *) Token->Buffer + Start, Packet->Data.Data, DataLen);
     196      CopyMem ((UINT8 *)Token->Buffer + Start, Packet->Data.Data, DataLen);
    202197
    203198      //
     
    207202        Token->BufferSize = Start + DataLen;
    208203      }
    209 
    210204    } else if (Instance->LastBlock != 0) {
    211205      //
     
    219213        Instance,
    220214        EFI_MTFTP4_ERRORCODE_DISK_FULL,
    221         (UINT8 *) "User provided memory block is too small"
     215        (UINT8 *)"User provided memory block is too small"
    222216        );
    223217
     
    228222  return EFI_SUCCESS;
    229223}
    230 
    231224
    232225/**
     
    248241EFI_STATUS
    249242Mtftp4RrqHandleData (
    250   IN     MTFTP4_PROTOCOL       *Instance,
    251   IN     EFI_MTFTP4_PACKET     *Packet,
    252   IN     UINT32                Len,
    253   IN     BOOLEAN               Multicast,
    254      OUT BOOLEAN               *Completed
     243  IN     MTFTP4_PROTOCOL    *Instance,
     244  IN     EFI_MTFTP4_PACKET  *Packet,
     245  IN     UINT32             Len,
     246  IN     BOOLEAN            Multicast,
     247  OUT BOOLEAN               *Completed
    255248  )
    256249{
    257   EFI_STATUS                Status;
    258   UINT16                    BlockNum;
    259   INTN                      Expected;
    260 
    261   *Completed  = FALSE;
    262   Status      = EFI_SUCCESS;
    263   BlockNum    = NTOHS (Packet->Data.Block);
    264   Expected    = Mtftp4GetNextBlockNum (&Instance->Blocks);
     250  EFI_STATUS  Status;
     251  UINT16      BlockNum;
     252  INTN        Expected;
     253
     254  *Completed = FALSE;
     255  Status     = EFI_SUCCESS;
     256  BlockNum   = NTOHS (Packet->Data.Block);
     257  Expected   = Mtftp4GetNextBlockNum (&Instance->Blocks);
    265258
    266259  ASSERT (Expected >= 0);
     
    275268    // If Expected is 0, (UINT16) (Expected - 1) is also the expected Ack number (65535).
    276269    //
    277     return Mtftp4RrqSendAck (Instance,  (UINT16) (Expected - 1));
     270    return Mtftp4RrqSendAck (Instance, (UINT16)(Expected - 1));
    278271  }
    279272
     
    287280  // Record the total received and saved block number.
    288281  //
    289   Instance->TotalBlock ++;
     282  Instance->TotalBlock++;
    290283
    291284  //
     
    315308      BlockNum   = Instance->LastBlock;
    316309      *Completed = TRUE;
    317 
    318310    } else {
    319       BlockNum = (UINT16) (Expected - 1);
    320     }
    321 
    322     if (Instance->WindowSize == (Instance->TotalBlock - Instance->AckedBlock) || Expected < 0) {
     311      BlockNum = (UINT16)(Expected - 1);
     312    }
     313
     314    if ((Instance->WindowSize == (Instance->TotalBlock - Instance->AckedBlock)) || (Expected < 0)) {
    323315      Status = Mtftp4RrqSendAck (Instance, BlockNum);
    324316    }
    325 
    326317  }
    327318
    328319  return Status;
    329320}
    330 
    331321
    332322/**
     
    349339BOOLEAN
    350340Mtftp4RrqOackValid (
    351   IN MTFTP4_PROTOCOL        *This,
    352   IN MTFTP4_OPTION          *Reply,
    353   IN MTFTP4_OPTION          *Request
     341  IN MTFTP4_PROTOCOL  *This,
     342  IN MTFTP4_OPTION    *Reply,
     343  IN MTFTP4_OPTION    *Request
    354344  )
    355345{
    356 
    357346  //
    358347  // It is invalid for server to return options we don't request
     
    366355  // return the timeout matches that requested.
    367356  //
    368   if ((((Reply->Exist & MTFTP4_BLKSIZE_EXIST) != 0)&& (Reply->BlkSize > Request->BlkSize)) ||
    369       (((Reply->Exist & MTFTP4_WINDOWSIZE_EXIST) != 0)&& (Reply->WindowSize > Request->WindowSize)) ||
     357  if ((((Reply->Exist & MTFTP4_BLKSIZE_EXIST) != 0) && (Reply->BlkSize > Request->BlkSize)) ||
     358      (((Reply->Exist & MTFTP4_WINDOWSIZE_EXIST) != 0) && (Reply->WindowSize > Request->WindowSize)) ||
    370359      (((Reply->Exist & MTFTP4_TIMEOUT_EXIST) != 0) && (Reply->Timeout != Request->Timeout))
    371      ) {
     360      )
     361  {
    372362    return FALSE;
    373363  }
     
    391381}
    392382
    393 
    394383/**
    395384  Configure a UDP IO port to receive the multicast.
     
    406395EFIAPI
    407396Mtftp4RrqConfigMcastPort (
    408   IN UDP_IO                 *McastIo,
    409   IN VOID                   *Context
     397  IN UDP_IO  *McastIo,
     398  IN VOID    *Context
    410399  )
    411400{
    412   MTFTP4_PROTOCOL           *Instance;
    413   EFI_MTFTP4_CONFIG_DATA    *Config;
    414   EFI_UDP4_CONFIG_DATA      UdpConfig;
    415   EFI_IPv4_ADDRESS          Group;
    416   EFI_STATUS                Status;
    417   IP4_ADDR                  Ip;
    418 
    419   Instance                     = (MTFTP4_PROTOCOL *) Context;
    420   Config                       = &Instance->Config;
     401  MTFTP4_PROTOCOL         *Instance;
     402  EFI_MTFTP4_CONFIG_DATA  *Config;
     403  EFI_UDP4_CONFIG_DATA    UdpConfig;
     404  EFI_IPv4_ADDRESS        Group;
     405  EFI_STATUS              Status;
     406  IP4_ADDR                Ip;
     407
     408  Instance = (MTFTP4_PROTOCOL *)Context;
     409  Config   = &Instance->Config;
    421410
    422411  UdpConfig.AcceptBroadcast    = FALSE;
     
    432421  IP4_COPY_ADDRESS (&UdpConfig.StationAddress, &Config->StationIp);
    433422  IP4_COPY_ADDRESS (&UdpConfig.SubnetMask, &Config->SubnetMask);
    434   UdpConfig.StationPort        = Instance->McastPort;
    435   UdpConfig.RemotePort         = 0;
     423  UdpConfig.StationPort = Instance->McastPort;
     424  UdpConfig.RemotePort  = 0;
    436425
    437426  Ip = HTONL (Instance->ServerIp);
     
    445434
    446435  if (!Config->UseDefaultSetting &&
    447       !EFI_IP4_EQUAL (&mZeroIp4Addr, &Config->GatewayIp)) {
     436      !EFI_IP4_EQUAL (&mZeroIp4Addr, &Config->GatewayIp))
     437  {
    448438    //
    449439    // The station IP address is manually configured and the Gateway IP is not 0.
     
    473463}
    474464
    475 
    476465/**
    477466  Function to process the OACK.
     
    493482EFI_STATUS
    494483Mtftp4RrqHandleOack (
    495   IN OUT MTFTP4_PROTOCOL       *Instance,
    496   IN     EFI_MTFTP4_PACKET     *Packet,
    497   IN     UINT32                Len,
    498   IN     BOOLEAN               Multicast,
    499      OUT BOOLEAN               *Completed
     484  IN OUT MTFTP4_PROTOCOL    *Instance,
     485  IN     EFI_MTFTP4_PACKET  *Packet,
     486  IN     UINT32             Len,
     487  IN     BOOLEAN            Multicast,
     488  OUT BOOLEAN               *Completed
    500489  )
    501490{
    502   MTFTP4_OPTION             Reply;
    503   EFI_STATUS                Status;
    504   INTN                      Expected;
    505   EFI_UDP4_PROTOCOL         *Udp4;
     491  MTFTP4_OPTION      Reply;
     492  EFI_STATUS         Status;
     493  INTN               Expected;
     494  EFI_UDP4_PROTOCOL  *Udp4;
    506495
    507496  *Completed = FALSE;
     
    526515
    527516  if (EFI_ERROR (Status) ||
    528       !Mtftp4RrqOackValid (Instance, &Reply, &Instance->RequestOption)) {
     517      !Mtftp4RrqOackValid (Instance, &Reply, &Instance->RequestOption))
     518  {
    529519    //
    530520    // Don't send an ERROR packet if the error is EFI_OUT_OF_RESOURCES.
     
    534524        Instance,
    535525        EFI_MTFTP4_ERRORCODE_ILLEGAL_OPERATION,
    536         (UINT8 *) "Malformatted OACK packet"
     526        (UINT8 *)"Malformatted OACK packet"
    537527        );
    538528    }
     
    542532
    543533  if ((Reply.Exist & MTFTP4_MCAST_EXIST) != 0) {
    544 
    545534    //
    546535    // Save the multicast info. Always update the Master, only update the
     
    555544          Instance,
    556545          EFI_MTFTP4_ERRORCODE_ILLEGAL_OPERATION,
    557           (UINT8 *) "Illegal multicast setting"
     546          (UINT8 *)"Illegal multicast setting"
    558547          );
    559548
     
    564553      // Create a UDP child then start receive the multicast from it.
    565554      //
    566       Instance->McastIp      = Reply.McastIp;
    567       Instance->McastPort    = Reply.McastPort;
     555      Instance->McastIp   = Reply.McastIp;
     556      Instance->McastPort = Reply.McastPort;
    568557      if (Instance->McastUdpPort == NULL) {
    569558        Instance->McastUdpPort = UdpIoCreateIo (
     
    578567                          Instance->McastUdpPort->UdpHandle,
    579568                          &gEfiUdp4ProtocolGuid,
    580                           (VOID **) &Udp4,
     569                          (VOID **)&Udp4,
    581570                          Instance->Service->Image,
    582571                          Instance->Handle,
     
    591580      }
    592581
    593 
    594582      if (Instance->McastUdpPort == NULL) {
    595583        return EFI_DEVICE_ERROR;
     
    602590          Instance,
    603591          EFI_MTFTP4_ERRORCODE_ACCESS_VIOLATION,
    604           (UINT8 *) "Failed to create socket to receive multicast packet"
     592          (UINT8 *)"Failed to create socket to receive multicast packet"
    605593          );
    606594
     
    623611      }
    624612    }
    625 
    626613  } else {
    627614    Instance->Master = TRUE;
     
    644631  // or tell the server we want to receive the Expected block.
    645632  //
    646   return Mtftp4RrqSendAck (Instance, (UINT16) (Expected - 1));
     633  return Mtftp4RrqSendAck (Instance, (UINT16)(Expected - 1));
    647634}
    648 
    649635
    650636/**
     
    660646EFIAPI
    661647Mtftp4RrqInput (
    662   IN NET_BUF                *UdpPacket,
    663   IN UDP_END_POINT          *EndPoint,
    664   IN EFI_STATUS             IoStatus,
    665   IN VOID                   *Context
     648  IN NET_BUF        *UdpPacket,
     649  IN UDP_END_POINT  *EndPoint,
     650  IN EFI_STATUS     IoStatus,
     651  IN VOID           *Context
    666652  )
    667653{
    668   MTFTP4_PROTOCOL           *Instance;
    669   EFI_MTFTP4_PACKET         *Packet;
    670   BOOLEAN                   Completed;
    671   BOOLEAN                   Multicast;
    672   EFI_STATUS                Status;
    673   UINT16                    Opcode;
    674   UINT32                    Len;
    675 
    676   Instance  = (MTFTP4_PROTOCOL *) Context;
     654  MTFTP4_PROTOCOL    *Instance;
     655  EFI_MTFTP4_PACKET  *Packet;
     656  BOOLEAN            Completed;
     657  BOOLEAN            Multicast;
     658  EFI_STATUS         Status;
     659  UINT16             Opcode;
     660  UINT32             Len;
     661
     662  Instance = (MTFTP4_PROTOCOL *)Context;
    677663  NET_CHECK_SIGNATURE (Instance, MTFTP4_PROTOCOL_SIGNATURE);
    678664
     
    692678  // Find the port this packet is from to restart receive correctly.
    693679  //
    694   Multicast = (BOOLEAN) (EndPoint->LocalAddr.Addr[0] == Instance->McastIp);
     680  Multicast = (BOOLEAN)(EndPoint->LocalAddr.Addr[0] == Instance->McastIp);
    695681
    696682  if (UdpPacket->TotalSize < MTFTP4_OPCODE_LEN) {
     
    725711    }
    726712
    727     NetbufCopy (UdpPacket, 0, Len, (UINT8 *) Packet);
    728 
     713    NetbufCopy (UdpPacket, 0, Len, (UINT8 *)Packet);
    729714  } else {
    730     Packet = (EFI_MTFTP4_PACKET *) NetbufGetByte (UdpPacket, 0, NULL);
     715    Packet = (EFI_MTFTP4_PACKET *)NetbufGetByte (UdpPacket, 0, NULL);
    731716    ASSERT (Packet != NULL);
    732717  }
     
    739724  //
    740725  if ((Instance->Token->CheckPacket != NULL) &&
    741       ((Opcode == EFI_MTFTP4_OPCODE_OACK) || (Opcode == EFI_MTFTP4_OPCODE_ERROR))) {
    742 
     726      ((Opcode == EFI_MTFTP4_OPCODE_OACK) || (Opcode == EFI_MTFTP4_OPCODE_ERROR)))
     727  {
    743728    Status = Instance->Token->CheckPacket (
    744729                                &Instance->Mtftp4,
    745730                                Instance->Token,
    746                                 (UINT16) Len,
     731                                (UINT16)Len,
    747732                                Packet
    748733                                );
     
    756741          Instance,
    757742          EFI_MTFTP4_ERRORCODE_REQUEST_DENIED,
    758           (UINT8 *) "User aborted the transfer"
     743          (UINT8 *)"User aborted the transfer"
    759744          );
    760745      }
     
    766751
    767752  switch (Opcode) {
    768   case EFI_MTFTP4_OPCODE_DATA:
    769     if ((Len > (UINT32) (MTFTP4_DATA_HEAD_LEN + Instance->BlkSize)) ||
    770         (Len < (UINT32) MTFTP4_DATA_HEAD_LEN)) {
    771       goto ON_EXIT;
    772     }
    773 
    774     Status = Mtftp4RrqHandleData (Instance, Packet, Len, Multicast, &Completed);
    775     break;
    776 
    777   case EFI_MTFTP4_OPCODE_OACK:
    778     if (Multicast || (Len <= MTFTP4_OPCODE_LEN)) {
    779       goto ON_EXIT;
    780     }
    781 
    782     Status = Mtftp4RrqHandleOack (Instance, Packet, Len, Multicast, &Completed);
    783     break;
    784 
    785   case EFI_MTFTP4_OPCODE_ERROR:
    786     Status = EFI_TFTP_ERROR;
    787     break;
    788 
    789   default:
    790     break;
     753    case EFI_MTFTP4_OPCODE_DATA:
     754      if ((Len > (UINT32)(MTFTP4_DATA_HEAD_LEN + Instance->BlkSize)) ||
     755          (Len < (UINT32)MTFTP4_DATA_HEAD_LEN))
     756      {
     757        goto ON_EXIT;
     758      }
     759
     760      Status = Mtftp4RrqHandleData (Instance, Packet, Len, Multicast, &Completed);
     761      break;
     762
     763    case EFI_MTFTP4_OPCODE_OACK:
     764      if (Multicast || (Len <= MTFTP4_OPCODE_LEN)) {
     765        goto ON_EXIT;
     766      }
     767
     768      Status = Mtftp4RrqHandleOack (Instance, Packet, Len, Multicast, &Completed);
     769      break;
     770
     771    case EFI_MTFTP4_OPCODE_ERROR:
     772      Status = EFI_TFTP_ERROR;
     773      break;
     774
     775    default:
     776      break;
    791777  }
    792778
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