Referencia del Archivo SNTP.c

Implementacion del protocolo SNTP.
. Más...

#include "includes.h"

Dependencia gráfica adjunta para SNTP.c:


Funciones

void SNTP_send_request (BYTE *rxtx_buffer)
 Genera y envia un paquete de peticion de fecha/hora
.
void timestamp_to_date ()
void SNTP_start (void)
 arranca la maquina de estados de SNTP
void SNTP_init (void)
 inicializa banderas de la maquina de estados de SNTP
evita que se ejecute por error (p.e on_process=0)
void SNTP_step (void)
 ejecuta un paso de la maquina de estados de SNTP
void SNTP_error (void)
 lleva a SNTP a un estado de error
lo utilizan los procesos externos para "notificar" de errores (p.e. timeout)

Variables

DWORD_BYTES time
BYTE aux
volatile unsigned long timestamp
volatile int y
volatile int d
volatile int m
int year
int day
int month
int hora
int segundos
int minutos

Descripción detallada

Implementacion del protocolo SNTP.
.

El Simple Network Time Protocol es una simplificacion del NTP. Utiliza simplemente un paquete de la respuesta del servidor al envio del request de NTP por lo que hay un error que se debe al retardo en la comunicacion del orden de milisegs. Por esto, solo se utiliza la timestamp de segundos y no la de fracciones de segundos para calcular fecha y hora. El timestamp (32 bits) contiene una cuenta de segundos transcurridos desde 1/1/1900 por lo que debe ser convertido a un formato mas amigable.


Documentación de las funciones

void SNTP_error ( void   ) 

lleva a SNTP a un estado de error
lo utilizan los procesos externos para "notificar" de errores (p.e. timeout)

void SNTP_init ( void   ) 

inicializa banderas de la maquina de estados de SNTP
evita que se ejecute por error (p.e on_process=0)

void SNTP_send_request ( BYTE rxtx_buffer  ) 

Genera y envia un paquete de peticion de fecha/hora
.

por un tema de seguridad, habria que mandarlo con un timestamp propio y checkear que la respuesta tenga dicho timestamp para de esa forma evitar que alguien me mande un udp simulando ser el server que me confunda. igual esto es de paranoico ya que si chequeo que el sender ip y el sender MAC sean del server, ya estaria cubierto.

La estructura que se utilizara para el almacenado de fechas y horas. Permite guardar la informacion de una manera mas amigable que el timestamp de NTP en un campo de 32 bits.

La peticion se realiza a la MAC e IP que han sido preasignadas.

Parámetros:
rxtx_buffer es un puntero al buffer temporal

Gráfico de llamadas para esta función:

void SNTP_start ( void   ) 

arranca la maquina de estados de SNTP

void SNTP_step ( void   ) 

ejecuta un paso de la maquina de estados de SNTP

Gráfico de llamadas para esta función:

void timestamp_to_date (  ) 

Para la conversion, se divide (de forma entera) entre 60 (o 24) sucesivamente, almacenando los restos para obtener segundos, minutos, horas y dias. La cuenta de dias desde 1900 se convierte al formato dia/mes/año utilizando un algoritmo derivado del algoritmo de conversion entre calendarios Juliano y Gregoriano. Solo se almacenan 2 digitos del año ya que dada la longitud del timestamp, el protocolo solo puede contar 136 años desde 1900 y no trabajaremos con fechas "negativas".


Documentación de las variables

volatile int d

int day

int hora

volatile int m

int minutos

int month

int segundos

volatile unsigned long timestamp

volatile int y

int year


Generado el Wed Jul 2 09:20:58 2008 para TCP/IP por  doxygen 1.5.6