<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40"><head><meta http-equiv=Content-Type content="text/html; charset=us-ascii"><meta name=Generator content="Microsoft Word 14 (filtered medium)"><style><!--
/* Font Definitions */
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri","sans-serif";}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
span.EmailStyle17
        {mso-style-type:personal-compose;
        font-family:"Calibri","sans-serif";
        color:windowtext;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-family:"Calibri","sans-serif";}
@page WordSection1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
        {page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]--></head><body lang=EN-US link=blue vlink=purple><div class=WordSection1><p class=MsoNormal>Revision 532 is much closer to building right out of the box on Windows than released version 2.5.0, but I still ran into a few problems which I detail below:<o:p></o:p></p><p class=MsoNormal>1.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; I added -DHAVE_INTTYPES_H -DWANT_DEMO -DWANT_HISTOGRAM to the C_DEFINES in the sources files.<o:p></o:p></p><p class=MsoNormal>2.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; I had to find a Windows compatible version of stdint.h and place it in src\missing<o:p></o:p></p><p class=MsoNormal>3.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; I needed to add the following to the top of hist.h<o:p></o:p></p><p class=MsoNormal>#ifdef WIN32<o:p></o:p></p><p class=MsoNormal># include &quot;missing\stdint.h&quot;<o:p></o:p></p><p class=MsoNormal>#endif /* WIN32 */<o:p></o:p></p><p class=MsoNormal>4.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; I had to create netperf_version.h manually since the configure script does not run in Windows.<o:p></o:p></p><p class=MsoNormal>5.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; I had to add some explicit casts to get rid of the following warnings<o:p></o:p></p><p class=MsoNormal>1&gt;c:\users\jonc\documents\netperf-latest\netperf2\src\netlib.c(3056) : warning C4018: '&lt;' : signed/unsigned mismatch<o:p></o:p></p><p class=MsoNormal>1&gt;c:\users\jonc\documents\netperf-latest\netperf2\src\netlib.c(4279) : warning C4244: 'function' : conversion from 'int64_t' to 'double', possible loss of data<o:p></o:p></p><p class=MsoNormal>1&gt;c:\users\jonc\documents\netperf-latest\netperf2\src\nettest_bsd.c(585) : warning C4133: 'function' : incompatible types - from 'int *' to 'const char *'<o:p></o:p></p><p class=MsoNormal>1&gt;c:\users\jonc\documents\netperf-latest\netperf2\src\nettest_bsd.c(1100) : warning C4133: 'function' : incompatible types - from 'int *' to 'const char *'<o:p></o:p></p><p class=MsoNormal>1&gt;c:\users\jonc\documents\netperf-latest\netperf2\src\nettest_bsd.c(1114) : warning C4133: 'function' : incompatible types - from 'int *' to 'char *'<o:p></o:p></p><p class=MsoNormal>1&gt;c:\users\jonc\documents\netperf-latest\netperf2\src\nettest_bsd.c(1126) : warning C4133: 'function' : incompatible types - from 'int *' to 'const char *'<o:p></o:p></p><p class=MsoNormal>1&gt;c:\users\jonc\documents\netperf-latest\netperf2\src\nettest_bsd.c(1140) : warning C4133: 'function' : incompatible types - from 'int *' to 'char *'<o:p></o:p></p><p class=MsoNormal>6. I had to change <o:p></o:p></p><p class=MsoNormal>inline demo_interval_tick<o:p></o:p></p><p class=MsoNormal>to<o:p></o:p></p><p class=MsoNormal>__inline demo_interval_tick<o:p></o:p></p><p class=MsoNormal>in netlib.c to get rid of the following errors<o:p></o:p></p><p class=MsoNormal>1&gt;c:\users\jonc\documents\netperf-latest\netperf2\src\netlib.c(3895) : error C2061: syntax error : identifier 'demo_interval_tick'<o:p></o:p></p><p class=MsoNormal>1&gt;c:\users\jonc\documents\netperf-latest\netperf2\src\netlib.c(3895) : error C2059: syntax error : ';'<o:p></o:p></p><p class=MsoNormal>1&gt;c:\users\jonc\documents\netperf-latest\netperf2\src\netlib.c(3895) : error C2059: syntax error : 'type'<o:p></o:p></p><p class=MsoNormal>1&gt;c:\users\jonc\documents\netperf-latest\netperf2\src\netlib.c(3973) : error C4013: 'demo_interval_tick' undefined; assuming extern returning int<o:p></o:p></p><p class=MsoNormal>7.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; I had to add function prototypes to get rid of the following errors<o:p></o:p></p><p class=MsoNormal>1&gt;c:\users\jonc\documents\netperf-latest\netperf2\src\nettest_bsd.c(1954) : error C4013: 'demo_stream_setup' undefined; assuming extern returning int<o:p></o:p></p><p class=MsoNormal>1&gt;c:\users\jonc\documents\netperf-latest\netperf2\src\nettest_bsd.c(2020) : error C4013: 'demo_first_timestamp' undefined; assuming extern returning int<o:p></o:p></p><p class=MsoNormal>1&gt;c:\users\jonc\documents\netperf-latest\netperf2\src\nettest_omni.c(3719) : error C4013: 'demo_first_timestamp' undefined; assuming extern returning int<o:p></o:p></p><p class=MsoNormal>1&gt;c:\users\jonc\documents\netperf-latest\netperf2\src\nettest_omni.c(4549) : error C4013: 'inet_ntop' undefined; assuming extern returning int<o:p></o:p></p><p class=MsoNormal>1&gt;c:\users\jonc\documents\netperf-latest\netperf2\src\netserver.c(699) : error C4013: 'recv_request_timed_n' undefined; assuming extern returning int<o:p></o:p></p><p class=MsoNormal>8. Correct spelling to remove this error (a problem in Linux, too)<o:p></o:p></p><p class=MsoNormal>1&gt;c:\users\jonc\documents\netperf-latest\netperf2\src\nettest_bsd.c(6727) : error C4013: 'demo_first_timetsamp' undefined; assuming extern returning int<o:p></o:p></p><p class=MsoNormal>9. Replace strndup with strncpy to get rid of the following error<o:p></o:p></p><p class=MsoNormal>1&gt;c:\users\jonc\documents\netperf-latest\netperf2\src\netsh.c(888) : error C4013: 'strndup' undefined; assuming extern returning int<o:p></o:p></p><p class=MsoNormal>10.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; I had to remove all instances of &#8220;#ifdef IPPROTO_TCP&#8221; and &#8220;#ifdef IPPROTO_UDP&#8221; since ws2def.h defines these in an enum, not #define<o:p></o:p></p><p class=MsoNormal>11.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; The variable implicit_socket is always set to 0 preventing the socket type and protocol from being read on omni tests so I commented out all &#8220;if (implicit_socket)&#8221; (this would be a problem in Linux, also)<o:p></o:p></p><p class=MsoNormal>12.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; The variable win_kludge_socket needs to be set before every call to recv_data.&nbsp; It is missing in one case in nettest_omni.c and causes UDP receive tests to hang.<o:p></o:p></p><p class=MsoNormal>13.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PRIu64 is defined as &quot;I64u&quot; in inttypes.h and that breaks the function my_snprintf() so I added the following to the top of my_snprintf()<o:p></o:p></p><p class=MsoNormal>if (strcmp(format, PRIu64)==0){<o:p></o:p></p><p class=MsoNormal>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return snprintf(buffer, size, format, *(unsigned long long *)value);<o:p></o:p></p><p class=MsoNormal>}<o:p></o:p></p><p class=MsoNormal>14.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; I also suggest that a check be added for fill file names being too long.<o:p></o:p></p><p class=MsoNormal><o:p>&nbsp;</o:p></p><p class=MsoNormal>I tried building with &#8211;DWANT_INTERVALS, but that enabled code using setitimer() which is not available in Windows.&nbsp; It appeared to me that it would take a lot of work to port that code to Windows.<o:p></o:p></p><p class=MsoNormal><o:p>&nbsp;</o:p></p><p class=MsoNormal>Regards,<o:p></o:p></p><p class=MsoNormal>Jonathan Cook<o:p></o:p></p><p class=MsoNormal>Electronics Engineer<o:p></o:p></p><p class=MsoNormal>National Institute of Standards and Technology<o:p></o:p></p><p class=MsoNormal><o:p>&nbsp;</o:p></p><p class=MsoNormal><o:p>&nbsp;</o:p></p></div></body></html>