This is the mail archive of the ecos-discuss@sourceware.org mailing list for the eCos project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

need the correct template & packages for ppp


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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]