Changeset 80980 in vbox for trunk/src/VBox/Devices/Network/slirp
- Timestamp:
- Sep 24, 2019 3:31:55 PM (6 years ago)
- svn:sync-xref-src-repo-rev:
- 133573
- Location:
- trunk/src/VBox/Devices/Network/slirp
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Devices/Network/slirp/slirp.h
r76553 r80980 529 529 } 530 530 531 static inline struct mbuf *slirpTftpMbufAlloc(PNATState pData)532 {533 return slirpServiceMbufAlloc(pData, CTL_TFTP);534 }535 531 static inline struct mbuf *slirpDnsMbufAlloc(PNATState pData) 536 532 { -
trunk/src/VBox/Devices/Network/slirp/tftp.c
r80585 r80980 124 124 }; 125 125 126 127 DECLINLINE(struct mbuf *) slirpTftpMbufAlloc(PNATState pData) 128 { 129 struct mbuf *m = slirpServiceMbufAlloc(pData, CTL_TFTP); 130 if (RT_UNLIKELY(m == NULL)) 131 LogFlowFunc(("LEAVE: Can't allocate mbuf\n")); 132 return m; 133 } 134 135 126 136 /** 127 137 * This function evaluate file name. … … 636 646 } 637 647 648 638 649 DECLINLINE(int) tftpSendError(PNATState pData, 639 650 PTFTPSESSION pTftpSession, … … 643 654 { 644 655 struct mbuf *m = NULL; 645 PTFTPIPHDR pTftpIpHeader = NULL;646 u_int cbMsg = (u_int)strlen(msg) + 1; /* ending zero */647 656 648 657 LogFlowFunc(("ENTER: errorcode: %RX16, msg: %s\n", errorcode, msg)); 649 658 m = slirpTftpMbufAlloc(pData); 650 if ( !m)651 { 652 LogFlowFunc(("LEAVE: Can't allocate mbuf\n"));653 return -1;654 } 655 656 m->m_data += if_maxlinkhdr;657 m->m_len = sizeof(TFTPIPHDR) + cbMsg;658 m->m_pkthdr.header = mtod(m, void *);659 pTftpIpHeader = mtod(m, PTFTPIPHDR); 660 661 pTftpIpHeader->u16TftpOpType = RT_H2N_U16_C(TFTP_ERROR);662 pTftpIpHeader->Core.u16TftpOpCode = RT_H2N_U16(errorcode); 663 664 m_copyback(pData, m, sizeof(TFTPIPHDR), cbMsg, (c_caddr_t)msg); 665 666 tftpSend(pData, pTftpSession, m, pcTftpIpHeaderRecv);659 if (m != NULL) 660 { 661 u_int cbMsg = (u_int)strlen(msg) + 1; /* ending zero */ 662 PTFTPIPHDR pTftpIpHeader; 663 664 m->m_data += if_maxlinkhdr; 665 m->m_len = sizeof(TFTPIPHDR) + cbMsg; 666 m->m_pkthdr.header = mtod(m, void *); 667 pTftpIpHeader = mtod(m, PTFTPIPHDR); 668 669 pTftpIpHeader->u16TftpOpType = RT_H2N_U16_C(TFTP_ERROR); 670 pTftpIpHeader->Core.u16TftpOpCode = RT_H2N_U16(errorcode); 671 672 m_copyback(pData, m, sizeof(TFTPIPHDR), cbMsg, (c_caddr_t)msg); 673 674 tftpSend(pData, pTftpSession, m, pcTftpIpHeaderRecv); 675 } 667 676 668 677 tftpSessionTerminate(pTftpSession); … … 671 680 return 0; 672 681 } 682 673 683 674 684 static int tftpSendData(PNATState pData, … … 687 697 { 688 698 tftpSendError(pData, pTftpSession, 6, "ACK is wrong", pcTftpIpHeaderRecv); 689 tftpSessionTerminate(pTftpSession);690 699 return -1; 691 700 }
Note:
See TracChangeset
for help on using the changeset viewer.