public inbox for ecos-discuss@sourceware.org
 help / color / mirror / Atom feed
* [ECOS] need the correct template & packages for ppp
@ 2007-02-21 10:27 shobhit saxena
  0 siblings, 0 replies; only message in thread
From: shobhit saxena @ 2007-02-21 10:27 UTC (permalink / raw)
  To: ecos-discuss

hello everyone,
                     i am working on arm e7t board using ecos tool.I
wanna  run the following program "windows_telnet".The problem is when
i take the "net template" & add "ppp support" to the ecos options,it
successfully builds.Then i tried to make this program but it shows
error  " windows_telnet section .bss is not within region ram".i know
that the executable is more than the size of RAM in the board(512 kb).

CAN ANYONE SUGGEST ME A COFIGURATION ON THE ECOS TOOL SO THAT PPP
& TELNET BOTH WORK WITHOUT THE ABOVE ERROR.

#include <pkgconf/system.h>
#include <pkgconf/net_lwip.h>
#include <network.h>
#include <cyg/ppp/ppp.h>

#define SOMAXCONN 3

static char *windows_script[] =
{
     "TIMEOUT",         "2",
     "",                "CLIENTCLIENT\\c",
     "CLIENTSERVER",    "\\c",
     0
};

void telnet(void)
{
     struct   sockaddr_in sin;
     struct   sockaddr_in pin;

     /* get an internet domain socket */
     int sd;
     if ((sd = socket(AF_INET, SOCK_STREAM, 0)) == -1)
     {
          return;
     }

     /* complete the socket structure */
     memset(&sin, 0, sizeof(sin));
     sin.sin_len = sizeof(sin);
     sin.sin_family = AF_INET;
     sin.sin_addr.s_addr = INADDR_ANY;
     sin.sin_port = htons(23);

     unsigned int opt = 1;
     if (setsockopt(sd, SOL_SOCKET, SO_REUSEADDR, &opt, sizeof(opt)) == -1)
     {
          goto out;
     }

     /* bind the socket to the port number */
     if (bind(sd, (struct sockaddr *) &sin, sizeof(sin)) == -1)
     {
          goto out;
     }

     /* show that we are willing to listen */
     if (listen(sd, SOMAXCONN) == -1)
     {
          goto out;
     }

     int sd_current;
     /* wait for a client to talk to us */
     socklen_t addrlen = sizeof(pin);
     if ((sd_current = accept(sd, (struct sockaddr *)  &pin, &addrlen)) == -1)
     {
          goto out;
     }

     for (;;)
     {
          char *prompt="eCos>";
          int promptlen = strlen(prompt);

          if (write(sd_current, prompt, promptlen) != promptlen)
          {
               goto AbortSession;
          }
          /* get a message from the client */
          char dir[256];
          int len;
          size_t i;
          for (i=0; i<sizeof(dir)-1; i++)
          {
               // returns when a full line has been collected
               len=read(sd_current, dir+i, 1);
               if (len != 1)
               {
                    goto AbortSession;
               }
               if (write(sd_current, dir+i, 1)!=1)
               {
                    goto AbortSession;
               }

               // ignore CR
               if (dir[i]=='\r')
               {
                    i--;
               }

               // Break out on a new line
               if (dir[i]=='\n')
               {
                    break;
               }
               dir[i]=0;
          }
     }
 AbortSession:
     /* close up both sockets */
     close(sd_current);
 out:
     close(sd);
}



int main(int argc, char **argv)
{
     // Bring up the TCP/IP network
     init_all_network_interfaces();

     for (;;)
     {
          cyg_ppp_options_t options;
          cyg_ppp_handle_t ppp_handle;

          // Initialize the options
          cyg_ppp_options_init( &options );

          options.script=windows_script;
          options.baud = CYGNUM_SERIAL_BAUD_9600;
          options.flowctl = CYG_PPP_FLOWCTL_NONE;
          options.idle_time_limit = 0; // never shut down.

          // Start up PPP
          ppp_handle = cyg_ppp_up( "/dev/ser0", &options );

          // Wait for it to get running
          if( cyg_ppp_wait_up( ppp_handle ) == 0 )
          {
               // Make use of PPP
               for (;;)
               {
                    telnet();
               }

               // never reached, but  for illustration:

               // Bring PPP link down
               cyg_ppp_down( ppp_handle );

               // Wait for connection to go down.
               cyg_ppp_wait_down( ppp_handle );
          }
     }
}

-- 
Before posting, please read the FAQ: http://ecos.sourceware.org/fom/ecos
and search the list archive: http://ecos.sourceware.org/ml/ecos-discuss

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2007-02-21 10:27 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2007-02-21 10:27 [ECOS] need the correct template & packages for ppp shobhit saxena

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).