<div dir="ltr">Dear Sir,<div><br></div><div>I still have a problem using TFTP.</div><div>I am digging RTEMS network stack due to TFTP problem.</div><div><br></div><div>My testing environment are two cases.</div><div><br></div>
<div>1. DHCP IP configuration using  "RTEMS_USE_BOOTP" predefine option.</div><div>   - Access Point IP : 192.168.10.1</div><div>   - Target Board IP : 192.168.10.22</div><div>   - My Notebook IP : 192.168.10.25</div>
<div><br></div><div>2. Static IP configuration.</div><div>   - Target Board IP : 192.168.137.100</div><div>   - My Notebook IP : 192.168.137.1</div><div><br></div><div>I tested two demos telnetd and tftptest in network example code.</div>
<div><font color="#0000ff">------------------------------------------------------------------------</font></div><div><font color="#0000ff">IP config type    Telnet server         TFTP</font></div><div><font color="#0000ff">------------------------------------------------------------------------</font></div>
<div><font color="#0000ff">DHCP config         Test OK           </font><font color="#ff0000">Problem 1.</font></div><div><font color="#0000ff">Static config          Test OK         </font><font color="#ff0000"> Problem 2.</font></div>
<div><div><font color="#0000ff">------------------------------------------------------------------------</font></div></div><div><br></div><div>I added printk() log message in network stack as like below;</div><div><br></div>
<div>< in_pcb.c ></div><div><div><font color="#0000ff">int</font></div><div><font color="#0000ff">in_pcbladdr(struct inpcb *inp, struct mbuf *nam, struct sockaddr_in **plocal_sin)</font></div><div><font color="#0000ff">{</font></div>
<div><span class="" style="white-space:pre"><font color="#0000ff">        .....</font></span></div><div><font color="#0000ff"><span class="" style="white-space:pre"> </span>if (inp->inp_laddr.s_addr == INADDR_ANY) {<br>
</font></div><div><font color="#0000ff"><span class="" style="white-space:pre">             </span>register struct route *ro;</font></div><div><font color="#0000ff"><br></font></div><div><font color="#0000ff"><span class="" style="white-space:pre">          </span>ia = (struct in_ifaddr *)0;</font></div>
<div><font color="#0000ff"><span class="" style="white-space:pre">              </span>/*</font></div><div><font color="#0000ff"><span class="" style="white-space:pre">              </span> * If route is known or can be allocated now,</font></div>
<div><font color="#0000ff"><span class="" style="white-space:pre">              </span> * our src addr is taken from the i/f, else punt.</font></div><div><font color="#0000ff"><span class="" style="white-space:pre">               </span> */</font></div>
<div><font color="#0000ff"><span class="" style="white-space:pre">              </span>ro = &inp->inp_route;</font></div><div><font color="#ff0000">#if 1 // Added by Thomas Kim</font></div><div><font color="#ff0000"><span class="" style="white-space:pre">              </span>if (ro->ro_rt != NULL)</font></div>
<div><font color="#ff0000"><span class="" style="white-space:pre">                      </span>printk("  if_name=%s\n", ro->ro_rt->rt_ifp->if_name);</font></div><div><font color="#ff0000">#endif</font></div><div><font color="#0000ff"><span class="" style="white-space:pre">               </span>....</font></div>
</div><div><font color="#0000ff">}</font></div><div><br></div><div>< ip_output.c ></div><div><br></div><div><div><font color="#0000ff">int</font></div><div><font color="#0000ff">ip_output(struct mbuf *m0, struct mbuf *opt, struct route *ro, int flags,</font></div>
<div><font color="#0000ff"><span class="" style="white-space:pre">      </span>struct ip_moptions *imo)</font></div><div><font color="#0000ff">{</font></div><div><span class="" style="white-space:pre"><font color="#0000ff">        .....</font></span></div>
<div><font color="#0000ff"><span class="" style="white-space:pre">      </span>if (ro->ro_rt == NULL) {<span class="" style="white-space:pre">               </span>dst->sin_family = AF_INET;</font></div><div><font color="#0000ff"><span class="" style="white-space:pre">           </span>dst->sin_len = sizeof(*dst);</font></div>
<div><font color="#0000ff"><span class="" style="white-space:pre">              </span>dst->sin_addr = ip->ip_dst;</font></div><div><font color="#0000ff"><span class="" style="white-space:pre">       </span>}</font></div><div><font color="#ff0000">#if 1 // Added by Thomas Kim</font></div>
<div><font color="#ff0000"><span class="" style="white-space:pre">      </span>printk("dst.s_addr=0x%08x\n", dst->sin_addr.s_addr);<br></font></div><div><span style="white-space:pre"><font color="#ff0000">#endif</font></span></div>
<div><span style="white-space:pre"><font color="#0000ff">        ....</font></span></div></div><div><span style="white-space:pre"><font color="#0000ff">}</font></span></div><div><span style="white-space:pre"><br></span></div>
<div><span style="white-space:pre">I attached my modified init.c source in tftpTest directory for running RTEMS shell.</span></div><div><span style="white-space:pre"><br></span></div><div><b>* Problem 1 :</b></div><div>   TFTP server program is running my notebook(IP:192.168.10.25). also, TFTP server folder have README file name.</div>
<div>   After I enter "cat /TFTP/<a href="http://192.168.10.25/README">192.168.10.25/README</a>" on target terminal, log message is below;</div><div>    - "if_name=lan"  <font color="#0000ff">==> OK. It is ethernet interface</font></div>
<div>    - "dst.s_addr=0xC0A80A01".  <font color="#ff0000">==> Problem. It is wrong IP address.</font></div><div>   It mean that target is tring to connect access point(192.168.10.1).</div><div><br></div><div>
<b>* Problem 2 : </b></div><div>   TFTP server program is running my notebook(IP:192.168.137.1).</div><div>   After I enter 'cat /TFTP/<a href="http://192.168.137.1/README">192.168.137.1/README</a>" on target terminal, log message is below;</div>
<div><div>    - "if_name=lo"  <font color="#ff0000">==> Problem. It is not ethernet interface. It is local loopback.</font></div><div>    - "dst.s_addr=0x7F000001". <font color="#ff0000">==> Problem. loopback IP is 127.0.0.1</font></div>
</div><div><br></div><div>I am guessing that there is a bug in RTEMS network stack for using TFTP.</div><div><br></div><div>Please advise me.</div><div><br></div><div>Best Regards,</div><div>Thomas Kim</div><div> </div></div>
<div class="gmail_extra"><br><br><div class="gmail_quote">2014-06-16 18:42 GMT+09:00 Thomas Kim <span dir="ltr"><<a href="mailto:thomas73.kim@gmail.com" target="_blank">thomas73.kim@gmail.com</a>></span>:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div dir="ltr">Dear Sir,<div><br></div><div>I am sorry. </div><div>At this time, I didn't use BOOTP option. therefore, I used static ethernet IP configuration.</div><div><br></div><div>My ethernet configuration is below;</div>

<div><br></div><div><div>extern int _rtems_smsc9220_driver_attach (struct rtems_bsdnet_ifconfig *config, int attach) ;</div><div><br></div><div>struct rtems_bsdnet_ifconfig lan9220_ifconfig =</div><div>{</div><div><span style="white-space:pre-wrap">           </span>"lan0",                   /* name */</div>

<div><span style="white-space:pre-wrap">          </span>_rtems_smsc9220_driver_attach,/* attach funtion */</div><div><span style="white-space:pre-wrap">               </span>NULL,                        /* next interface */</div><div>
#if defined(RTEMS_USE_BOOTP)</div><div><span style="white-space:pre-wrap">          </span>NULL,</div><div><span style="white-space:pre-wrap">            </span>NULL,</div><div>#else</div><div><span style="white-space:pre-wrap">                </span>"192.168.137.100",           /* ip address */</div>

<div><span style="white-space:pre-wrap">          </span>"255.255.255.0",             /* ip netmask */</div><div>#endif</div><div><span style="white-space:pre-wrap">               </span>NULL,                 /* hardware address */</div>

<div>  0,                           /* ignore broadcast */</div><div>  0,                           /* mtu */</div><div>  0,                           /* rbuf count */</div><div>  0,                           /* xbuf count */</div>

<div>  0,                           /* port */</div><div>  0,                           /* irno */</div><div>  0,                           /* bpar */</div><div>  0                            /* drv ctrl */</div><div>};</div>

<div><br></div><div>struct rtems_bsdnet_config rtems_bsdnet_config = {</div><div>  &lan9220_ifconfig,                /* Loop back interface only */</div><div>#if defined(RTEMS_USE_BOOTP)</div><div>  rtems_bsdnet_do_dhcp,                /* do not use bootp */</div>

<div>#else</div><div>  NULL,</div><div>#endif</div><div>  20,                   /* Default network task priority */</div><div>  256*1024,            /* Default mbuf capacity */</div><div>  256*1024,            /* Default mbuf cluster capacity */</div>

<div>#if defined(RTEMS_USE_BOOTP)</div><div>  NULL,</div><div>  NULL,</div><div>  NULL,</div><div>  NULL,</div><div>  { NULL },</div><div>                        /* NTP server(s) */</div><div>  { "64.4.10.33",       /* <a href="http://time.windows.com" target="_blank">time.windows.com</a> (Microsoft) */</div>

<div>    "210.98.16.100" },  /* <a href="http://time.kriss.re.kr" target="_blank">time.kriss.re.kr</a> (KRISS) */</div><div>#else</div><div>  "rtems",             /* Host name */</div><div>  "<a href="http://nodomain.com" target="_blank">nodomain.com</a>",      /* Domain name */</div>

<div>  "192.168.137.1",     /* Gateway */</div><div>  "127.0.0.1",         /* Log host */</div><div>  {"61.41.153.2",      /* Name server(s) */</div><div>   "1.214.68.2" },</div><div>

                       /* NTP server(s) */</div><div>  { "64.4.10.33",      /* <a href="http://time.windows.com" target="_blank">time.windows.com</a> (Microsoft) */</div><div>    "210.98.16.100" }, /* <a href="http://time.kriss.re.kr" target="_blank">time.kriss.re.kr</a> (KRISS) */</div>

<div>#endif</div><div>  0,                   /* sb_efficiency */</div><div>  0,                   /* udp_tx_buf_size */</div><div>  0,                   /* udp_rx_buf_size */</div><div>  0,                   /* tcp_tx_buf_size */</div>

<div>  0                    /* tcp_rx_buf_size */</div><div><br></div><div>};</div></div><div><br></div><div>Best Regards,</div><div><br></div></div><div class="gmail_extra"><br><br><div class="gmail_quote">2014-06-16 18:38 GMT+09:00 Thomas Kim <span dir="ltr"><<a href="mailto:thomas73.kim@gmail.com" target="_blank">thomas73.kim@gmail.com</a>></span>:<br>

<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">Dear Sir,<div><br></div><div>I have still a problem for using TFTP test code.</div><div><br></div><div>
As I check in rtems_tftp_open_works() function, I guess that BOOTP should be enabled for running TFTP.</div>

<div>At this time, if_address, ip_netmask and hardware_address of struct rtems_bsdnet_ifconfig are NULL.</div><div><br></div><div>I don't know TFTP operation is related with BOOTP.</div><div><br></div><div>Please advise me.</div>


<div><br></div><div>Best Regards,</div><div> </div></div><div class="gmail_extra"><br><br><div class="gmail_quote">2014-05-15 15:42 GMT+09:00 Thomas Kim <span dir="ltr"><<a href="mailto:thomas73.kim@gmail.com" target="_blank">thomas73.kim@gmail.com</a>></span>:<br>


<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">Dear Sir,<div><br></div><div>I am testing RTEMS FreeBSD networking using network-demos-network-demos-4.10.2.</div>


<div><br></div><div>At this time, testing code about dnstest, http  are OK.</div><div><br></div>
<div>When I try to test tftpTest, there is below problem.</div><div><br></div><div>Function flow for TFTP request is below;</div><div>  - rtems_tftp_open()</div><div>  - rtems_tftp_open_worker()</div><div>  - sendto()</div>



<div>  - udp_output()</div><div>  - ip_output() ==> My problem is here !!!</div><div><br></div><div>Normal case using TCP, if_output() function entry in ip_output is ether_output().</div><div>But, abnormal case using UDP, if_output() function entry is looutout().</div>



<div>It mean that UDP is tring to use loopback interface.</div><div><br></div><div>I don't know the reason about this problem.</div><div><br></div><div>Please could you let me know how to resolve this ?</div><div><br>



</div><div>Best Regards.</div><div><br></div></div>
</blockquote></div><br></div>
</blockquote></div><br></div>
</blockquote></div><br></div>