Changeset 94b3ee13 in rtems


Ignore:
Timestamp:
01/21/99 22:25:43 (24 years ago)
Author:
Joel Sherrill <joel.sherrill@…>
Branches:
4.10, 4.11, 4.8, 4.9, 5, master
Children:
535db3ae
Parents:
3048b8f
Message:

Made to compile after hacking tftp driver into beginnings of a mini-filesystem.

Files:
4 added
16 edited

Legend:

Unmodified
Added
Removed
  • c/src/exec/libnetworking/lib/tftpDriver.c

    r3048b8f r94b3ee13  
    1414
    1515#include <stdio.h>
     16#include <stdlib.h>
    1617#include <errno.h>
    1718#include <malloc.h>
     
    2627#include <arpa/inet.h>
    2728
     29#ifndef set_errno_and_return_minus_one
     30#define set_errno_and_return_minus_one( _error ) \
     31  do { errno = (_error); return -1; } while(0)
     32#endif
     33
     34
    2835/*
    2936 * Range of UDP ports to try
     
    137144static struct tftpStream ** volatile tftpStreams;
    138145
     146typedef struct {
     147   rtems_id                             tftp_mutex;
     148   int                                  nStreams;
     149   struct tftpStream ** volatile        tftpStreams;
     150  rtems_filesystem_mount_table_entry_t *mt_entry; 
     151}  tftp_fs_info;
     152
     153int rtems_tftp_mount_me(
     154  rtems_filesystem_mount_table_entry_t *temp_mt_entry
     155)
     156{
     157  tftp_fs_info      *fs_info;
     158  rtems_status_code  sc;
     159
     160  /*
     161   * Allocate stuff for this file system.
     162   */
     163
     164  fs_info = calloc( 1, sizeof( tftp_fs_info ));
     165  if ( !fs_info )
     166    set_errno_and_return_minus_one( ENOMEM );
     167
     168  temp_mt_entry->fs_info                = fs_info;
     169  temp_mt_entry->mt_fs_root.node_access = fs_info;
     170
     171 
     172  sc = rtems_semaphore_create (
     173    rtems_build_name('T', 'F', 'T', 'P'),
     174    1,
     175    RTEMS_FIFO |
     176    RTEMS_BINARY_SEMAPHORE |
     177    RTEMS_NO_INHERIT_PRIORITY |
     178    RTEMS_NO_PRIORITY_CEILING |
     179    RTEMS_LOCAL,
     180    0,
     181    &fs_info->tftp_mutex
     182  );
     183
     184  if (sc != RTEMS_SUCCESSFUL)
     185    set_errno_and_return_minus_one( ENOMEM ); /* ??? */
     186
     187  return 0;
     188}
     189
    139190/*
    140191 * Initialize the TFTP driver
     
    148199)
    149200{
    150         rtems_status_code sc;
    151 
    152         sc = rtems_semaphore_create (rtems_build_name('T', 'F', 'T', 'P'),
    153                                         1,
    154                                         RTEMS_FIFO |
    155                                                 RTEMS_BINARY_SEMAPHORE |
    156                                                 RTEMS_NO_INHERIT_PRIORITY |
    157                                                 RTEMS_NO_PRIORITY_CEILING |
    158                                                 RTEMS_LOCAL,
    159                                         0,
    160                                         &tftp_mutex);
    161         if (sc != RTEMS_SUCCESSFUL)
    162                 return sc;
     201
    163202/* XXX change to a mount */
    164203        rtems_io_register_name (TFTP_PATHNAME_PREFIX, major, minor);
     
    294333}
    295334
    296 /*
    297  * Open a TFTP stream
    298  */
    299 rtems_device_driver rtems_tftp_open(
    300   rtems_device_major_number major,
    301   rtems_device_minor_number minor,
    302   void *pargp
    303 )
    304 {
    305         rtems_libio_open_close_args_t *ap = pargp;
    306         struct tftpStream *tp;
    307         int retryCount;
     335int rtems_tftp_evaluate_for_make(
     336   const char                         *path,       /* IN     */
     337   rtems_filesystem_location_info_t   *pathloc,    /* IN/OUT */
     338   const char                        **name        /* OUT    */
     339)
     340
     341    set_errno_and_return_minus_one( EIO );   
     342}
     343/*
     344 * XXX - Fix return values.
     345 */
     346
     347int TFTP_eval_path( 
     348  const char                        *pathname,     /* IN     */
     349  int                                flags,        /* IN     */
     350  rtems_filesystem_location_info_t  *pathloc       /* IN/OUT */
     351)
     352{
    308353        rtems_unsigned32 farAddress;
    309         int s;
    310354        int len;
    311         char *cp1, *cp2;
    312         char *remoteFilename;
    313         rtems_interval now;
    314         rtems_status_code sc;
    315 
    316 /* XXX change to eval_path/open */
    317         /*
    318          * Read-only for now
    319          */
    320         if (ap->flags & LIBIO_FLAGS_WRITE)
    321                 return RTEMS_NOT_IMPLEMENTED;
     355        const char *remoteFilename;
     356
     357  tftp_fs_info      *fs_info;
     358  const char *cp1, *cp2;
     359
     360  fs_info = pathloc->node_access;
    322361
    323362        /*
    324363         * Pick apart the name into a host:pathname pair
    325364         */
    326         if (strlen (ap->iop->pathname) <= strlen (TFTP_PATHNAME_PREFIX))
    327                 return RTEMS_INVALID_NAME;
    328         cp2 = ap->iop->pathname + strlen (TFTP_PATHNAME_PREFIX);
     365        /*
     366         * XXX - I think this is handled by the caller of
     367         *       the evaluate routine. ? Am I starting at the right
     368         *       place?
     369         */
     370
     371        cp2 = pathname+1;
     372
    329373        if (*cp2 == '/') {
    330374                farAddress = rtems_bsdnet_bootp_server_address.s_addr;
     
    355399        if (strlen (remoteFilename) > (TFTP_BUFSIZE - 10))
    356400                return RTEMS_INVALID_NAME;
     401
     402  return 0;
     403}
     404
     405/*
     406 * Open a TFTP stream
     407 */
     408rtems_device_driver rtems_tftp_open(
     409  rtems_device_major_number major,
     410  rtems_device_minor_number minor,
     411  void *pargp
     412)
     413{
     414        rtems_libio_open_close_args_t *ap = pargp;
     415        struct tftpStream *tp;
     416        int retryCount;
     417        rtems_unsigned32 farAddress = 0; /* XXX - node parameter */
     418        int s;
     419        int len;
     420        char *cp1, *cp2;
     421        char *remoteFilename = NULL; /* XXX - node parameter */
     422        rtems_interval now;
     423        rtems_status_code sc;
     424
     425        /*
     426         * Read-only for now
     427         */
     428        /* XXX - Move to the open routine */
     429        if (ap->flags & LIBIO_FLAGS_WRITE)
     430                return RTEMS_NOT_IMPLEMENTED;
     431
    357432
    358433        /*
  • c/src/exec/libnetworking/libc/res_config.h

    r3048b8f r94b3ee13  
    1515u_int16_t _getshort(const u_char *src);
    1616u_int32_t _getlong(const u_char *src);
    17 int gethostname (char *name, int namelen);
    18 int sethostname (char *name, int namelen);
     17int gethostname (char *name, size_t namelen);
     18int sethostname (char *name, size_t namelen);
    1919int issetugid (void);
    2020#endif
  • c/src/exec/libnetworking/rtems/rtems_bsdnet_internal.h

    r3048b8f r94b3ee13  
    167167 * Some extra prototypes
    168168 */
    169 int sethostname (char *name, int namelen);
     169int sethostname (char *name, size_t namelen);
    170170void domaininit (void *);
    171171void ifinit (void *);
     
    175175int socket (int, int, int);
    176176int ioctl (int, unsigned long, ...);
     177struct socket *rtems_bsdnet_fdToSocket (int fd);
     178int rtems_bsdnet_makeFdForSocket (struct socket *);
     179
     180/*
     181 * Events used by networking routines.
     182 * Everything will break if the application
     183 * tries to use these events or if the `sleep'
     184 * events are equal to any of the NETISR * events.
     185 */
     186#define SBWAIT_EVENT   RTEMS_EVENT_24
     187#define SOSLEEP_EVENT  RTEMS_EVENT_25
     188#define NETISR_IP_EVENT                (1 << NETISR_IP)
     189#define NETISR_ARP_EVENT       (1 << NETISR_ARP)
     190#define NETISR_EVENTS  (NETISR_IP_EVENT|NETISR_ARP_EVENT)
    177191
    178192#endif /* _RTEMS_BSDNET_INTERNAL_H_ */
  • c/src/exec/libnetworking/rtems/sghostname.c

    r3048b8f r94b3ee13  
    1616
    1717int
    18 gethostname (char *name, int namelen)
     18gethostname (char *name, size_t namelen)
    1919{
    2020        char *cp = rtems_hostname;
     
    2727
    2828int
    29 sethostname (char *name, int namelen)
     29sethostname (char *name, size_t namelen)
    3030{
    3131        char *old, *new;
  • c/src/lib/libnetworking/lib/tftpDriver.c

    r3048b8f r94b3ee13  
    1414
    1515#include <stdio.h>
     16#include <stdlib.h>
    1617#include <errno.h>
    1718#include <malloc.h>
     
    2627#include <arpa/inet.h>
    2728
     29#ifndef set_errno_and_return_minus_one
     30#define set_errno_and_return_minus_one( _error ) \
     31  do { errno = (_error); return -1; } while(0)
     32#endif
     33
     34
    2835/*
    2936 * Range of UDP ports to try
     
    137144static struct tftpStream ** volatile tftpStreams;
    138145
     146typedef struct {
     147   rtems_id                             tftp_mutex;
     148   int                                  nStreams;
     149   struct tftpStream ** volatile        tftpStreams;
     150  rtems_filesystem_mount_table_entry_t *mt_entry; 
     151}  tftp_fs_info;
     152
     153int rtems_tftp_mount_me(
     154  rtems_filesystem_mount_table_entry_t *temp_mt_entry
     155)
     156{
     157  tftp_fs_info      *fs_info;
     158  rtems_status_code  sc;
     159
     160  /*
     161   * Allocate stuff for this file system.
     162   */
     163
     164  fs_info = calloc( 1, sizeof( tftp_fs_info ));
     165  if ( !fs_info )
     166    set_errno_and_return_minus_one( ENOMEM );
     167
     168  temp_mt_entry->fs_info                = fs_info;
     169  temp_mt_entry->mt_fs_root.node_access = fs_info;
     170
     171 
     172  sc = rtems_semaphore_create (
     173    rtems_build_name('T', 'F', 'T', 'P'),
     174    1,
     175    RTEMS_FIFO |
     176    RTEMS_BINARY_SEMAPHORE |
     177    RTEMS_NO_INHERIT_PRIORITY |
     178    RTEMS_NO_PRIORITY_CEILING |
     179    RTEMS_LOCAL,
     180    0,
     181    &fs_info->tftp_mutex
     182  );
     183
     184  if (sc != RTEMS_SUCCESSFUL)
     185    set_errno_and_return_minus_one( ENOMEM ); /* ??? */
     186
     187  return 0;
     188}
     189
    139190/*
    140191 * Initialize the TFTP driver
     
    148199)
    149200{
    150         rtems_status_code sc;
    151 
    152         sc = rtems_semaphore_create (rtems_build_name('T', 'F', 'T', 'P'),
    153                                         1,
    154                                         RTEMS_FIFO |
    155                                                 RTEMS_BINARY_SEMAPHORE |
    156                                                 RTEMS_NO_INHERIT_PRIORITY |
    157                                                 RTEMS_NO_PRIORITY_CEILING |
    158                                                 RTEMS_LOCAL,
    159                                         0,
    160                                         &tftp_mutex);
    161         if (sc != RTEMS_SUCCESSFUL)
    162                 return sc;
     201
    163202/* XXX change to a mount */
    164203        rtems_io_register_name (TFTP_PATHNAME_PREFIX, major, minor);
     
    294333}
    295334
    296 /*
    297  * Open a TFTP stream
    298  */
    299 rtems_device_driver rtems_tftp_open(
    300   rtems_device_major_number major,
    301   rtems_device_minor_number minor,
    302   void *pargp
    303 )
    304 {
    305         rtems_libio_open_close_args_t *ap = pargp;
    306         struct tftpStream *tp;
    307         int retryCount;
     335int rtems_tftp_evaluate_for_make(
     336   const char                         *path,       /* IN     */
     337   rtems_filesystem_location_info_t   *pathloc,    /* IN/OUT */
     338   const char                        **name        /* OUT    */
     339)
     340
     341    set_errno_and_return_minus_one( EIO );   
     342}
     343/*
     344 * XXX - Fix return values.
     345 */
     346
     347int TFTP_eval_path( 
     348  const char                        *pathname,     /* IN     */
     349  int                                flags,        /* IN     */
     350  rtems_filesystem_location_info_t  *pathloc       /* IN/OUT */
     351)
     352{
    308353        rtems_unsigned32 farAddress;
    309         int s;
    310354        int len;
    311         char *cp1, *cp2;
    312         char *remoteFilename;
    313         rtems_interval now;
    314         rtems_status_code sc;
    315 
    316 /* XXX change to eval_path/open */
    317         /*
    318          * Read-only for now
    319          */
    320         if (ap->flags & LIBIO_FLAGS_WRITE)
    321                 return RTEMS_NOT_IMPLEMENTED;
     355        const char *remoteFilename;
     356
     357  tftp_fs_info      *fs_info;
     358  const char *cp1, *cp2;
     359
     360  fs_info = pathloc->node_access;
    322361
    323362        /*
    324363         * Pick apart the name into a host:pathname pair
    325364         */
    326         if (strlen (ap->iop->pathname) <= strlen (TFTP_PATHNAME_PREFIX))
    327                 return RTEMS_INVALID_NAME;
    328         cp2 = ap->iop->pathname + strlen (TFTP_PATHNAME_PREFIX);
     365        /*
     366         * XXX - I think this is handled by the caller of
     367         *       the evaluate routine. ? Am I starting at the right
     368         *       place?
     369         */
     370
     371        cp2 = pathname+1;
     372
    329373        if (*cp2 == '/') {
    330374                farAddress = rtems_bsdnet_bootp_server_address.s_addr;
     
    355399        if (strlen (remoteFilename) > (TFTP_BUFSIZE - 10))
    356400                return RTEMS_INVALID_NAME;
     401
     402  return 0;
     403}
     404
     405/*
     406 * Open a TFTP stream
     407 */
     408rtems_device_driver rtems_tftp_open(
     409  rtems_device_major_number major,
     410  rtems_device_minor_number minor,
     411  void *pargp
     412)
     413{
     414        rtems_libio_open_close_args_t *ap = pargp;
     415        struct tftpStream *tp;
     416        int retryCount;
     417        rtems_unsigned32 farAddress = 0; /* XXX - node parameter */
     418        int s;
     419        int len;
     420        char *cp1, *cp2;
     421        char *remoteFilename = NULL; /* XXX - node parameter */
     422        rtems_interval now;
     423        rtems_status_code sc;
     424
     425        /*
     426         * Read-only for now
     427         */
     428        /* XXX - Move to the open routine */
     429        if (ap->flags & LIBIO_FLAGS_WRITE)
     430                return RTEMS_NOT_IMPLEMENTED;
     431
    357432
    358433        /*
  • c/src/lib/libnetworking/libc/res_config.h

    r3048b8f r94b3ee13  
    1515u_int16_t _getshort(const u_char *src);
    1616u_int32_t _getlong(const u_char *src);
    17 int gethostname (char *name, int namelen);
    18 int sethostname (char *name, int namelen);
     17int gethostname (char *name, size_t namelen);
     18int sethostname (char *name, size_t namelen);
    1919int issetugid (void);
    2020#endif
  • c/src/lib/libnetworking/rtems/rtems_bsdnet_internal.h

    r3048b8f r94b3ee13  
    167167 * Some extra prototypes
    168168 */
    169 int sethostname (char *name, int namelen);
     169int sethostname (char *name, size_t namelen);
    170170void domaininit (void *);
    171171void ifinit (void *);
     
    175175int socket (int, int, int);
    176176int ioctl (int, unsigned long, ...);
     177struct socket *rtems_bsdnet_fdToSocket (int fd);
     178int rtems_bsdnet_makeFdForSocket (struct socket *);
     179
     180/*
     181 * Events used by networking routines.
     182 * Everything will break if the application
     183 * tries to use these events or if the `sleep'
     184 * events are equal to any of the NETISR * events.
     185 */
     186#define SBWAIT_EVENT   RTEMS_EVENT_24
     187#define SOSLEEP_EVENT  RTEMS_EVENT_25
     188#define NETISR_IP_EVENT                (1 << NETISR_IP)
     189#define NETISR_ARP_EVENT       (1 << NETISR_ARP)
     190#define NETISR_EVENTS  (NETISR_IP_EVENT|NETISR_ARP_EVENT)
    177191
    178192#endif /* _RTEMS_BSDNET_INTERNAL_H_ */
  • c/src/lib/libnetworking/rtems/sghostname.c

    r3048b8f r94b3ee13  
    1616
    1717int
    18 gethostname (char *name, int namelen)
     18gethostname (char *name, size_t namelen)
    1919{
    2020        char *cp = rtems_hostname;
     
    2727
    2828int
    29 sethostname (char *name, int namelen)
     29sethostname (char *name, size_t namelen)
    3030{
    3131        char *old, *new;
  • c/src/libnetworking/lib/tftpDriver.c

    r3048b8f r94b3ee13  
    1414
    1515#include <stdio.h>
     16#include <stdlib.h>
    1617#include <errno.h>
    1718#include <malloc.h>
     
    2627#include <arpa/inet.h>
    2728
     29#ifndef set_errno_and_return_minus_one
     30#define set_errno_and_return_minus_one( _error ) \
     31  do { errno = (_error); return -1; } while(0)
     32#endif
     33
     34
    2835/*
    2936 * Range of UDP ports to try
     
    137144static struct tftpStream ** volatile tftpStreams;
    138145
     146typedef struct {
     147   rtems_id                             tftp_mutex;
     148   int                                  nStreams;
     149   struct tftpStream ** volatile        tftpStreams;
     150  rtems_filesystem_mount_table_entry_t *mt_entry; 
     151}  tftp_fs_info;
     152
     153int rtems_tftp_mount_me(
     154  rtems_filesystem_mount_table_entry_t *temp_mt_entry
     155)
     156{
     157  tftp_fs_info      *fs_info;
     158  rtems_status_code  sc;
     159
     160  /*
     161   * Allocate stuff for this file system.
     162   */
     163
     164  fs_info = calloc( 1, sizeof( tftp_fs_info ));
     165  if ( !fs_info )
     166    set_errno_and_return_minus_one( ENOMEM );
     167
     168  temp_mt_entry->fs_info                = fs_info;
     169  temp_mt_entry->mt_fs_root.node_access = fs_info;
     170
     171 
     172  sc = rtems_semaphore_create (
     173    rtems_build_name('T', 'F', 'T', 'P'),
     174    1,
     175    RTEMS_FIFO |
     176    RTEMS_BINARY_SEMAPHORE |
     177    RTEMS_NO_INHERIT_PRIORITY |
     178    RTEMS_NO_PRIORITY_CEILING |
     179    RTEMS_LOCAL,
     180    0,
     181    &fs_info->tftp_mutex
     182  );
     183
     184  if (sc != RTEMS_SUCCESSFUL)
     185    set_errno_and_return_minus_one( ENOMEM ); /* ??? */
     186
     187  return 0;
     188}
     189
    139190/*
    140191 * Initialize the TFTP driver
     
    148199)
    149200{
    150         rtems_status_code sc;
    151 
    152         sc = rtems_semaphore_create (rtems_build_name('T', 'F', 'T', 'P'),
    153                                         1,
    154                                         RTEMS_FIFO |
    155                                                 RTEMS_BINARY_SEMAPHORE |
    156                                                 RTEMS_NO_INHERIT_PRIORITY |
    157                                                 RTEMS_NO_PRIORITY_CEILING |
    158                                                 RTEMS_LOCAL,
    159                                         0,
    160                                         &tftp_mutex);
    161         if (sc != RTEMS_SUCCESSFUL)
    162                 return sc;
     201
    163202/* XXX change to a mount */
    164203        rtems_io_register_name (TFTP_PATHNAME_PREFIX, major, minor);
     
    294333}
    295334
    296 /*
    297  * Open a TFTP stream
    298  */
    299 rtems_device_driver rtems_tftp_open(
    300   rtems_device_major_number major,
    301   rtems_device_minor_number minor,
    302   void *pargp
    303 )
    304 {
    305         rtems_libio_open_close_args_t *ap = pargp;
    306         struct tftpStream *tp;
    307         int retryCount;
     335int rtems_tftp_evaluate_for_make(
     336   const char                         *path,       /* IN     */
     337   rtems_filesystem_location_info_t   *pathloc,    /* IN/OUT */
     338   const char                        **name        /* OUT    */
     339)
     340
     341    set_errno_and_return_minus_one( EIO );   
     342}
     343/*
     344 * XXX - Fix return values.
     345 */
     346
     347int TFTP_eval_path( 
     348  const char                        *pathname,     /* IN     */
     349  int                                flags,        /* IN     */
     350  rtems_filesystem_location_info_t  *pathloc       /* IN/OUT */
     351)
     352{
    308353        rtems_unsigned32 farAddress;
    309         int s;
    310354        int len;
    311         char *cp1, *cp2;
    312         char *remoteFilename;
    313         rtems_interval now;
    314         rtems_status_code sc;
    315 
    316 /* XXX change to eval_path/open */
    317         /*
    318          * Read-only for now
    319          */
    320         if (ap->flags & LIBIO_FLAGS_WRITE)
    321                 return RTEMS_NOT_IMPLEMENTED;
     355        const char *remoteFilename;
     356
     357  tftp_fs_info      *fs_info;
     358  const char *cp1, *cp2;
     359
     360  fs_info = pathloc->node_access;
    322361
    323362        /*
    324363         * Pick apart the name into a host:pathname pair
    325364         */
    326         if (strlen (ap->iop->pathname) <= strlen (TFTP_PATHNAME_PREFIX))
    327                 return RTEMS_INVALID_NAME;
    328         cp2 = ap->iop->pathname + strlen (TFTP_PATHNAME_PREFIX);
     365        /*
     366         * XXX - I think this is handled by the caller of
     367         *       the evaluate routine. ? Am I starting at the right
     368         *       place?
     369         */
     370
     371        cp2 = pathname+1;
     372
    329373        if (*cp2 == '/') {
    330374                farAddress = rtems_bsdnet_bootp_server_address.s_addr;
     
    355399        if (strlen (remoteFilename) > (TFTP_BUFSIZE - 10))
    356400                return RTEMS_INVALID_NAME;
     401
     402  return 0;
     403}
     404
     405/*
     406 * Open a TFTP stream
     407 */
     408rtems_device_driver rtems_tftp_open(
     409  rtems_device_major_number major,
     410  rtems_device_minor_number minor,
     411  void *pargp
     412)
     413{
     414        rtems_libio_open_close_args_t *ap = pargp;
     415        struct tftpStream *tp;
     416        int retryCount;
     417        rtems_unsigned32 farAddress = 0; /* XXX - node parameter */
     418        int s;
     419        int len;
     420        char *cp1, *cp2;
     421        char *remoteFilename = NULL; /* XXX - node parameter */
     422        rtems_interval now;
     423        rtems_status_code sc;
     424
     425        /*
     426         * Read-only for now
     427         */
     428        /* XXX - Move to the open routine */
     429        if (ap->flags & LIBIO_FLAGS_WRITE)
     430                return RTEMS_NOT_IMPLEMENTED;
     431
    357432
    358433        /*
  • c/src/libnetworking/libc/res_config.h

    r3048b8f r94b3ee13  
    1515u_int16_t _getshort(const u_char *src);
    1616u_int32_t _getlong(const u_char *src);
    17 int gethostname (char *name, int namelen);
    18 int sethostname (char *name, int namelen);
     17int gethostname (char *name, size_t namelen);
     18int sethostname (char *name, size_t namelen);
    1919int issetugid (void);
    2020#endif
  • c/src/libnetworking/rtems/rtems_bsdnet_internal.h

    r3048b8f r94b3ee13  
    167167 * Some extra prototypes
    168168 */
    169 int sethostname (char *name, int namelen);
     169int sethostname (char *name, size_t namelen);
    170170void domaininit (void *);
    171171void ifinit (void *);
     
    175175int socket (int, int, int);
    176176int ioctl (int, unsigned long, ...);
     177struct socket *rtems_bsdnet_fdToSocket (int fd);
     178int rtems_bsdnet_makeFdForSocket (struct socket *);
     179
     180/*
     181 * Events used by networking routines.
     182 * Everything will break if the application
     183 * tries to use these events or if the `sleep'
     184 * events are equal to any of the NETISR * events.
     185 */
     186#define SBWAIT_EVENT   RTEMS_EVENT_24
     187#define SOSLEEP_EVENT  RTEMS_EVENT_25
     188#define NETISR_IP_EVENT                (1 << NETISR_IP)
     189#define NETISR_ARP_EVENT       (1 << NETISR_ARP)
     190#define NETISR_EVENTS  (NETISR_IP_EVENT|NETISR_ARP_EVENT)
    177191
    178192#endif /* _RTEMS_BSDNET_INTERNAL_H_ */
  • c/src/libnetworking/rtems/sghostname.c

    r3048b8f r94b3ee13  
    1616
    1717int
    18 gethostname (char *name, int namelen)
     18gethostname (char *name, size_t namelen)
    1919{
    2020        char *cp = rtems_hostname;
     
    2727
    2828int
    29 sethostname (char *name, int namelen)
     29sethostname (char *name, size_t namelen)
    3030{
    3131        char *old, *new;
  • cpukit/libnetworking/lib/tftpDriver.c

    r3048b8f r94b3ee13  
    1414
    1515#include <stdio.h>
     16#include <stdlib.h>
    1617#include <errno.h>
    1718#include <malloc.h>
     
    2627#include <arpa/inet.h>
    2728
     29#ifndef set_errno_and_return_minus_one
     30#define set_errno_and_return_minus_one( _error ) \
     31  do { errno = (_error); return -1; } while(0)
     32#endif
     33
     34
    2835/*
    2936 * Range of UDP ports to try
     
    137144static struct tftpStream ** volatile tftpStreams;
    138145
     146typedef struct {
     147   rtems_id                             tftp_mutex;
     148   int                                  nStreams;
     149   struct tftpStream ** volatile        tftpStreams;
     150  rtems_filesystem_mount_table_entry_t *mt_entry; 
     151}  tftp_fs_info;
     152
     153int rtems_tftp_mount_me(
     154  rtems_filesystem_mount_table_entry_t *temp_mt_entry
     155)
     156{
     157  tftp_fs_info      *fs_info;
     158  rtems_status_code  sc;
     159
     160  /*
     161   * Allocate stuff for this file system.
     162   */
     163
     164  fs_info = calloc( 1, sizeof( tftp_fs_info ));
     165  if ( !fs_info )
     166    set_errno_and_return_minus_one( ENOMEM );
     167
     168  temp_mt_entry->fs_info                = fs_info;
     169  temp_mt_entry->mt_fs_root.node_access = fs_info;
     170
     171 
     172  sc = rtems_semaphore_create (
     173    rtems_build_name('T', 'F', 'T', 'P'),
     174    1,
     175    RTEMS_FIFO |
     176    RTEMS_BINARY_SEMAPHORE |
     177    RTEMS_NO_INHERIT_PRIORITY |
     178    RTEMS_NO_PRIORITY_CEILING |
     179    RTEMS_LOCAL,
     180    0,
     181    &fs_info->tftp_mutex
     182  );
     183
     184  if (sc != RTEMS_SUCCESSFUL)
     185    set_errno_and_return_minus_one( ENOMEM ); /* ??? */
     186
     187  return 0;
     188}
     189
    139190/*
    140191 * Initialize the TFTP driver
     
    148199)
    149200{
    150         rtems_status_code sc;
    151 
    152         sc = rtems_semaphore_create (rtems_build_name('T', 'F', 'T', 'P'),
    153                                         1,
    154                                         RTEMS_FIFO |
    155                                                 RTEMS_BINARY_SEMAPHORE |
    156                                                 RTEMS_NO_INHERIT_PRIORITY |
    157                                                 RTEMS_NO_PRIORITY_CEILING |
    158                                                 RTEMS_LOCAL,
    159                                         0,
    160                                         &tftp_mutex);
    161         if (sc != RTEMS_SUCCESSFUL)
    162                 return sc;
     201
    163202/* XXX change to a mount */
    164203        rtems_io_register_name (TFTP_PATHNAME_PREFIX, major, minor);
     
    294333}
    295334
    296 /*
    297  * Open a TFTP stream
    298  */
    299 rtems_device_driver rtems_tftp_open(
    300   rtems_device_major_number major,
    301   rtems_device_minor_number minor,
    302   void *pargp
    303 )
    304 {
    305         rtems_libio_open_close_args_t *ap = pargp;
    306         struct tftpStream *tp;
    307         int retryCount;
     335int rtems_tftp_evaluate_for_make(
     336   const char                         *path,       /* IN     */
     337   rtems_filesystem_location_info_t   *pathloc,    /* IN/OUT */
     338   const char                        **name        /* OUT    */
     339)
     340
     341    set_errno_and_return_minus_one( EIO );   
     342}
     343/*
     344 * XXX - Fix return values.
     345 */
     346
     347int TFTP_eval_path( 
     348  const char                        *pathname,     /* IN     */
     349  int                                flags,        /* IN     */
     350  rtems_filesystem_location_info_t  *pathloc       /* IN/OUT */
     351)
     352{
    308353        rtems_unsigned32 farAddress;
    309         int s;
    310354        int len;
    311         char *cp1, *cp2;
    312         char *remoteFilename;
    313         rtems_interval now;
    314         rtems_status_code sc;
    315 
    316 /* XXX change to eval_path/open */
    317         /*
    318          * Read-only for now
    319          */
    320         if (ap->flags & LIBIO_FLAGS_WRITE)
    321                 return RTEMS_NOT_IMPLEMENTED;
     355        const char *remoteFilename;
     356
     357  tftp_fs_info      *fs_info;
     358  const char *cp1, *cp2;
     359
     360  fs_info = pathloc->node_access;
    322361
    323362        /*
    324363         * Pick apart the name into a host:pathname pair
    325364         */
    326         if (strlen (ap->iop->pathname) <= strlen (TFTP_PATHNAME_PREFIX))
    327                 return RTEMS_INVALID_NAME;
    328         cp2 = ap->iop->pathname + strlen (TFTP_PATHNAME_PREFIX);
     365        /*
     366         * XXX - I think this is handled by the caller of
     367         *       the evaluate routine. ? Am I starting at the right
     368         *       place?
     369         */
     370
     371        cp2 = pathname+1;
     372
    329373        if (*cp2 == '/') {
    330374                farAddress = rtems_bsdnet_bootp_server_address.s_addr;
     
    355399        if (strlen (remoteFilename) > (TFTP_BUFSIZE - 10))
    356400                return RTEMS_INVALID_NAME;
     401
     402  return 0;
     403}
     404
     405/*
     406 * Open a TFTP stream
     407 */
     408rtems_device_driver rtems_tftp_open(
     409  rtems_device_major_number major,
     410  rtems_device_minor_number minor,
     411  void *pargp
     412)
     413{
     414        rtems_libio_open_close_args_t *ap = pargp;
     415        struct tftpStream *tp;
     416        int retryCount;
     417        rtems_unsigned32 farAddress = 0; /* XXX - node parameter */
     418        int s;
     419        int len;
     420        char *cp1, *cp2;
     421        char *remoteFilename = NULL; /* XXX - node parameter */
     422        rtems_interval now;
     423        rtems_status_code sc;
     424
     425        /*
     426         * Read-only for now
     427         */
     428        /* XXX - Move to the open routine */
     429        if (ap->flags & LIBIO_FLAGS_WRITE)
     430                return RTEMS_NOT_IMPLEMENTED;
     431
    357432
    358433        /*
  • cpukit/libnetworking/libc/res_config.h

    r3048b8f r94b3ee13  
    1515u_int16_t _getshort(const u_char *src);
    1616u_int32_t _getlong(const u_char *src);
    17 int gethostname (char *name, int namelen);
    18 int sethostname (char *name, int namelen);
     17int gethostname (char *name, size_t namelen);
     18int sethostname (char *name, size_t namelen);
    1919int issetugid (void);
    2020#endif
  • cpukit/libnetworking/rtems/rtems_bsdnet_internal.h

    r3048b8f r94b3ee13  
    167167 * Some extra prototypes
    168168 */
    169 int sethostname (char *name, int namelen);
     169int sethostname (char *name, size_t namelen);
    170170void domaininit (void *);
    171171void ifinit (void *);
     
    175175int socket (int, int, int);
    176176int ioctl (int, unsigned long, ...);
     177struct socket *rtems_bsdnet_fdToSocket (int fd);
     178int rtems_bsdnet_makeFdForSocket (struct socket *);
     179
     180/*
     181 * Events used by networking routines.
     182 * Everything will break if the application
     183 * tries to use these events or if the `sleep'
     184 * events are equal to any of the NETISR * events.
     185 */
     186#define SBWAIT_EVENT   RTEMS_EVENT_24
     187#define SOSLEEP_EVENT  RTEMS_EVENT_25
     188#define NETISR_IP_EVENT                (1 << NETISR_IP)
     189#define NETISR_ARP_EVENT       (1 << NETISR_ARP)
     190#define NETISR_EVENTS  (NETISR_IP_EVENT|NETISR_ARP_EVENT)
    177191
    178192#endif /* _RTEMS_BSDNET_INTERNAL_H_ */
  • cpukit/libnetworking/rtems/sghostname.c

    r3048b8f r94b3ee13  
    1616
    1717int
    18 gethostname (char *name, int namelen)
     18gethostname (char *name, size_t namelen)
    1919{
    2020        char *cp = rtems_hostname;
     
    2727
    2828int
    29 sethostname (char *name, int namelen)
     29sethostname (char *name, size_t namelen)
    3030{
    3131        char *old, *new;
Note: See TracChangeset for help on using the changeset viewer.