Changeset a0af97d in rtems


Ignore:
Timestamp:
Nov 9, 1999, 3:43:47 AM (20 years ago)
Author:
Joel Sherrill <joel.sherrill@…>
Branches:
4.10, 4.11, 4.8, 4.9, master
Children:
41d2eaca
Parents:
84bf329
Message:

Patch from Eric Norum <eric@…> to add NTP BOOTP support because
EPICS needs a synchronized time-of-day clock. This patch is the changes
needed to get NTP server information from a BOOTP server.

This patch also adds NTP server information to the network configuration
structure, too.

Files:
9 edited

Legend:

Unmodified
Added
Removed
  • c/src/exec/libnetworking/nfs/bootp_subr.c

    r84bf329 ra0af97d  
    731731      break;
    732732
    733     case 2:    /* Time offset, unused */
     733    case 2:    /* Time offset */
     734      /* Time offset */
     735      if (len!=4)
     736        panic("bootpc: time offset len is %d",len);
     737      bcopy (p, &rtems_bsdnet_timeoffset, 4);
     738      rtems_bsdnet_timeoffset = ntohl (rtems_bsdnet_timeoffset);
    734739      break;
    735740
     
    741746        bcopy(p, &dhcp_gw.sin_addr, 4);
    742747        dhcp_gotgw = 1;
     748      }
     749      break;
     750
     751    /*
     752     * Some old BOOTP daemons don't support the NTP server (42) tag,
     753     * but do support the RFC 868 time server (4) tag.  Cheat here
     754     * and assume they mean the same thing.
     755     */
     756    case 4:
     757    case 42:
     758      /* Time servers */
     759      if (len % 4)
     760        panic ("bootpc: time server Len is %d", len);
     761      {
     762      int tlen = 0;
     763      while ((tlen < len) &&
     764             (rtems_bsdnet_ntpserver_count < sizeof rtems_bsdnet_config.ntp_server /
     765             sizeof rtems_bsdnet_config.ntp_server[0])) {
     766        bcopy (p+tlen,
     767                &rtems_bsdnet_ntpserver[rtems_bsdnet_ntpserver_count],
     768                4);
     769        printip("Time Server",
     770          rtems_bsdnet_ntpserver[rtems_bsdnet_ntpserver_count]);
     771        rtems_bsdnet_ntpserver_count++;
     772        tlen += 4;
     773      }
    743774      }
    744775      break;
  • c/src/exec/libnetworking/rtems/rtems_bsdnet.h

    r84bf329 ra0af97d  
    3636extern char *rtems_bsdnet_bootp_server_name;
    3737extern char *rtems_bsdnet_bootp_boot_file_name;
     38extern struct in_addr rtems_bsdnet_ntpserver[];
     39extern int rtems_bsdnet_ntpserver_count;
     40extern long rtems_bsdnet_timeoffset;
    3841
    3942/*
     
    128131        char                    *log_host;              /* BOOTP        */
    129132        char                    *name_server[3];        /* BOOTP        */
     133        char                    *ntp_server[3];         /* BOOTP        */
    130134};
    131135extern struct rtems_bsdnet_config rtems_bsdnet_config;
  • c/src/exec/libnetworking/rtems/rtems_glue.c

    r84bf329 ra0af97d  
    7878                        sizeof rtems_bsdnet_config.name_server[0]];
    7979int rtems_bsdnet_nameserver_count;
     80struct in_addr rtems_bsdnet_ntpserver[sizeof rtems_bsdnet_config.ntp_server /
     81                        sizeof rtems_bsdnet_config.ntp_server[0]];
     82int rtems_bsdnet_ntpserver_count;
     83long rtems_bsdnet_timeoffset;
    8084
    8185/*
     
    734738        struct sockaddr_in gateway;
    735739        int i;
     740        extern char *strdup (const char *cp);
    736741
    737742        /*
     
    753758                rtems_bsdnet_nameserver[rtems_bsdnet_nameserver_count++].s_addr
    754759                        = inet_addr (rtems_bsdnet_config.name_server[i]);
     760        }
     761        for (i = 0 ; i < sizeof rtems_bsdnet_config.ntp_server /
     762                        sizeof rtems_bsdnet_config.ntp_server[0] ; i++) {
     763                if (!rtems_bsdnet_config.ntp_server[i])
     764                        break;
     765                rtems_bsdnet_ntpserver[rtems_bsdnet_ntpserver_count++].s_addr
     766                        = inet_addr (rtems_bsdnet_config.ntp_server[i]);
    755767        }
    756768
  • c/src/libnetworking/nfs/bootp_subr.c

    r84bf329 ra0af97d  
    731731      break;
    732732
    733     case 2:    /* Time offset, unused */
     733    case 2:    /* Time offset */
     734      /* Time offset */
     735      if (len!=4)
     736        panic("bootpc: time offset len is %d",len);
     737      bcopy (p, &rtems_bsdnet_timeoffset, 4);
     738      rtems_bsdnet_timeoffset = ntohl (rtems_bsdnet_timeoffset);
    734739      break;
    735740
     
    741746        bcopy(p, &dhcp_gw.sin_addr, 4);
    742747        dhcp_gotgw = 1;
     748      }
     749      break;
     750
     751    /*
     752     * Some old BOOTP daemons don't support the NTP server (42) tag,
     753     * but do support the RFC 868 time server (4) tag.  Cheat here
     754     * and assume they mean the same thing.
     755     */
     756    case 4:
     757    case 42:
     758      /* Time servers */
     759      if (len % 4)
     760        panic ("bootpc: time server Len is %d", len);
     761      {
     762      int tlen = 0;
     763      while ((tlen < len) &&
     764             (rtems_bsdnet_ntpserver_count < sizeof rtems_bsdnet_config.ntp_server /
     765             sizeof rtems_bsdnet_config.ntp_server[0])) {
     766        bcopy (p+tlen,
     767                &rtems_bsdnet_ntpserver[rtems_bsdnet_ntpserver_count],
     768                4);
     769        printip("Time Server",
     770          rtems_bsdnet_ntpserver[rtems_bsdnet_ntpserver_count]);
     771        rtems_bsdnet_ntpserver_count++;
     772        tlen += 4;
     773      }
    743774      }
    744775      break;
  • c/src/libnetworking/rtems/rtems_bsdnet.h

    r84bf329 ra0af97d  
    3636extern char *rtems_bsdnet_bootp_server_name;
    3737extern char *rtems_bsdnet_bootp_boot_file_name;
     38extern struct in_addr rtems_bsdnet_ntpserver[];
     39extern int rtems_bsdnet_ntpserver_count;
     40extern long rtems_bsdnet_timeoffset;
    3841
    3942/*
     
    128131        char                    *log_host;              /* BOOTP        */
    129132        char                    *name_server[3];        /* BOOTP        */
     133        char                    *ntp_server[3];         /* BOOTP        */
    130134};
    131135extern struct rtems_bsdnet_config rtems_bsdnet_config;
  • c/src/libnetworking/rtems/rtems_glue.c

    r84bf329 ra0af97d  
    7878                        sizeof rtems_bsdnet_config.name_server[0]];
    7979int rtems_bsdnet_nameserver_count;
     80struct in_addr rtems_bsdnet_ntpserver[sizeof rtems_bsdnet_config.ntp_server /
     81                        sizeof rtems_bsdnet_config.ntp_server[0]];
     82int rtems_bsdnet_ntpserver_count;
     83long rtems_bsdnet_timeoffset;
    8084
    8185/*
     
    734738        struct sockaddr_in gateway;
    735739        int i;
     740        extern char *strdup (const char *cp);
    736741
    737742        /*
     
    753758                rtems_bsdnet_nameserver[rtems_bsdnet_nameserver_count++].s_addr
    754759                        = inet_addr (rtems_bsdnet_config.name_server[i]);
     760        }
     761        for (i = 0 ; i < sizeof rtems_bsdnet_config.ntp_server /
     762                        sizeof rtems_bsdnet_config.ntp_server[0] ; i++) {
     763                if (!rtems_bsdnet_config.ntp_server[i])
     764                        break;
     765                rtems_bsdnet_ntpserver[rtems_bsdnet_ntpserver_count++].s_addr
     766                        = inet_addr (rtems_bsdnet_config.ntp_server[i]);
    755767        }
    756768
  • cpukit/libnetworking/nfs/bootp_subr.c

    r84bf329 ra0af97d  
    731731      break;
    732732
    733     case 2:    /* Time offset, unused */
     733    case 2:    /* Time offset */
     734      /* Time offset */
     735      if (len!=4)
     736        panic("bootpc: time offset len is %d",len);
     737      bcopy (p, &rtems_bsdnet_timeoffset, 4);
     738      rtems_bsdnet_timeoffset = ntohl (rtems_bsdnet_timeoffset);
    734739      break;
    735740
     
    741746        bcopy(p, &dhcp_gw.sin_addr, 4);
    742747        dhcp_gotgw = 1;
     748      }
     749      break;
     750
     751    /*
     752     * Some old BOOTP daemons don't support the NTP server (42) tag,
     753     * but do support the RFC 868 time server (4) tag.  Cheat here
     754     * and assume they mean the same thing.
     755     */
     756    case 4:
     757    case 42:
     758      /* Time servers */
     759      if (len % 4)
     760        panic ("bootpc: time server Len is %d", len);
     761      {
     762      int tlen = 0;
     763      while ((tlen < len) &&
     764             (rtems_bsdnet_ntpserver_count < sizeof rtems_bsdnet_config.ntp_server /
     765             sizeof rtems_bsdnet_config.ntp_server[0])) {
     766        bcopy (p+tlen,
     767                &rtems_bsdnet_ntpserver[rtems_bsdnet_ntpserver_count],
     768                4);
     769        printip("Time Server",
     770          rtems_bsdnet_ntpserver[rtems_bsdnet_ntpserver_count]);
     771        rtems_bsdnet_ntpserver_count++;
     772        tlen += 4;
     773      }
    743774      }
    744775      break;
  • cpukit/libnetworking/rtems/rtems_bsdnet.h

    r84bf329 ra0af97d  
    3636extern char *rtems_bsdnet_bootp_server_name;
    3737extern char *rtems_bsdnet_bootp_boot_file_name;
     38extern struct in_addr rtems_bsdnet_ntpserver[];
     39extern int rtems_bsdnet_ntpserver_count;
     40extern long rtems_bsdnet_timeoffset;
    3841
    3942/*
     
    128131        char                    *log_host;              /* BOOTP        */
    129132        char                    *name_server[3];        /* BOOTP        */
     133        char                    *ntp_server[3];         /* BOOTP        */
    130134};
    131135extern struct rtems_bsdnet_config rtems_bsdnet_config;
  • cpukit/libnetworking/rtems/rtems_glue.c

    r84bf329 ra0af97d  
    7878                        sizeof rtems_bsdnet_config.name_server[0]];
    7979int rtems_bsdnet_nameserver_count;
     80struct in_addr rtems_bsdnet_ntpserver[sizeof rtems_bsdnet_config.ntp_server /
     81                        sizeof rtems_bsdnet_config.ntp_server[0]];
     82int rtems_bsdnet_ntpserver_count;
     83long rtems_bsdnet_timeoffset;
    8084
    8185/*
     
    734738        struct sockaddr_in gateway;
    735739        int i;
     740        extern char *strdup (const char *cp);
    736741
    737742        /*
     
    753758                rtems_bsdnet_nameserver[rtems_bsdnet_nameserver_count++].s_addr
    754759                        = inet_addr (rtems_bsdnet_config.name_server[i]);
     760        }
     761        for (i = 0 ; i < sizeof rtems_bsdnet_config.ntp_server /
     762                        sizeof rtems_bsdnet_config.ntp_server[0] ; i++) {
     763                if (!rtems_bsdnet_config.ntp_server[i])
     764                        break;
     765                rtems_bsdnet_ntpserver[rtems_bsdnet_ntpserver_count++].s_addr
     766                        = inet_addr (rtems_bsdnet_config.ntp_server[i]);
    755767        }
    756768
Note: See TracChangeset for help on using the changeset viewer.