Changeset 15087 in vbox for trunk/src/VBox/Devices/Network/slirp
- Timestamp:
- Dec 8, 2008 5:33:32 AM (16 years ago)
- svn:sync-xref-src-repo-rev:
- 40474
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Devices/Network/slirp/socket.c
r15086 r15087 18 18 19 19 #ifdef VBOX_WITH_SLIRP_ICMP 20 static void send_icmp_to_guest(PNATState, char *, s truct socket*);20 static void send_icmp_to_guest(PNATState, char *, size_t, struct socket *, const struct sockaddr_in *); 21 21 static void sorecvfrom_icmp_win(PNATState, struct socket *); 22 22 #endif … … 433 433 434 434 if (so->so_type == IPPROTO_ICMP) { /* This is a "ping" reply */ 435 #if !defined(VBOX_WITH_SLIRP_ICMP) || (defined(VBOX_WITH_SLIRP_ICMP) && !defined(RT_OS_WINDOWS)) 435 436 sorecvfrom_icmp_unix(pData, so); 437 #endif 438 #if defined(VBOX_WITH_SLIRP_ICMP) && !defined(RT_OS_WINDOWS) 439 sorecvfrom_icmp_win(pData, so); 440 #endif 436 441 udp_detach(pData, so); 437 442 } else { /* A "normal" UDP packet */ … … 766 771 #ifdef VBOX_WITH_SLIRP_ICMP 767 772 static void 768 send_icmp_to_guest(PNATState pData, char *buff, s truct socket *so)773 send_icmp_to_guest(PNATState pData, char *buff, size_t len, struct socket *so, const struct sockaddr_in *addr) 769 774 { 770 775 struct ip *ip; … … 795 800 Assert(m != NULL); 796 801 797 src = addr .sin_addr.s_addr;802 src = addr->sin_addr.s_addr; 798 803 799 804 ip = mtod(m, struct ip *); … … 830 835 free(icm); 831 836 } 832 #endif 833 static void sorecvfrom_icmp_win(PNATState pData, struct socket *so){ 834 #if 0 837 838 static void 839 sorecvfrom_icmp_win(PNATState pData, struct socket *so) 840 { 841 int len; 835 842 int i; 843 ICMP_ECHO_REPLY *icr; 844 u_char code = ~0; 836 845 len = IcmpParseReplies(pData->pvIcmpBuffer, pData->szIcmpBuffer); 837 #endif 838 } 846 if (len <= 0) { 847 LogRel(("Error (%d) occured on ICMP receiving \n", GetLastError())); 848 return; 849 } 850 icr = (ICMP_ECHO_REPLY *)pData->pvIcmpBuffer; 851 for (i = 0; i < len; ++i) { 852 switch(icr[i].Status) { 853 case IP_DEST_HOST_UNREACHABLE: 854 code=ICMP_UNREACH_HOST; 855 case IP_DEST_NET_UNREACHABLE: 856 code=ICMP_UNREACH_NET; 857 } 858 } 859 } 860 #endif 861 839 862 static void sorecvfrom_icmp_unix(PNATState pData, struct socket *so) 840 863 { … … 864 887 { 865 888 #ifdef VBOX_WITH_SLIRP_ICMP 866 send_icmp_to_guest(pData, buff, so);889 send_icmp_to_guest(pData, buff, len, so, &addr); 867 890 #else 868 891 icmp_reflect(pData, so->so_m);
Note:
See TracChangeset
for help on using the changeset viewer.