int generate_pkt ( struct pkt *x_pkt, const struct timeval *tv_xmt, int key_id, struct key *pkt_key ) { l_fp xmt; int pkt_len = LEN_PKT_NOMAC; memset(x_pkt, 0, sizeof(struct pkt)); TVTOTS(tv_xmt, &xmt); HTONL_FP(&xmt, &(x_pkt->xmt)); x_pkt->stratum = STRATUM_TO_PKT(STRATUM_UNSPEC); x_pkt->ppoll = 8; /* FIXME! Modus broadcast + adr. check -> bdr. pkt */ set_li_vn_mode(x_pkt, LEAP_NOTINSYNC, 4, 3); if (pkt_key != NULL) { int mac_size = 20; /* max room for MAC */ x_pkt->exten[0] = htonl(key_id); mac_size = make_mac((char *)x_pkt, pkt_len, mac_size, pkt_key, (char *)&x_pkt->exten[1]); if (mac_size) pkt_len += mac_size + 4; } return pkt_len; }
void test_SetLiVnMode2() { struct pkt expected; expected.li_vn_mode = PKT_LI_VN_MODE(LEAP_NOTINSYNC, NTP_OLDVERSION, MODE_BROADCAST); struct pkt actual; set_li_vn_mode(&actual, LEAP_NOTINSYNC, NTP_OLDVERSION, MODE_BROADCAST); TEST_ASSERT_EQUAL(expected.li_vn_mode, actual.li_vn_mode); }
void test_SetLiVnMode1() { struct pkt expected; expected.li_vn_mode = PKT_LI_VN_MODE(LEAP_NOWARNING, NTP_VERSION, MODE_SERVER); struct pkt actual; set_li_vn_mode(&actual, LEAP_NOWARNING, NTP_VERSION, MODE_SERVER); TEST_ASSERT_EQUAL(expected.li_vn_mode, actual.li_vn_mode); }
int generate_pkt ( struct pkt *x_pkt, const struct timeval *tv_xmt, int key_id, struct key *pkt_key ) { l_fp xmt_fp; int pkt_len; int mac_size; pkt_len = LEN_PKT_NOMAC; ZERO(*x_pkt); TVTOTS(tv_xmt, &xmt_fp); HTONL_FP(&xmt_fp, &x_pkt->xmt); x_pkt->stratum = STRATUM_TO_PKT(STRATUM_UNSPEC); x_pkt->ppoll = 8; /* FIXME! Modus broadcast + adr. check -> bdr. pkt */ set_li_vn_mode(x_pkt, LEAP_NOTINSYNC, ntpver, 3); if (debug > 0) { printf("generate_pkt: key_id %d, key pointer %p\n", key_id, pkt_key); } if (pkt_key != NULL) { x_pkt->exten[0] = htonl(key_id); mac_size = make_mac(x_pkt, pkt_len, MAX_MDG_LEN, pkt_key, (char *)&x_pkt->exten[1]); if (mac_size > 0) pkt_len += mac_size + KEY_MAC_LEN; #ifdef DEBUG if (debug > 0) { printf("generate_pkt: mac_size is %d\n", mac_size); } #endif } return pkt_len; }