/* * we write out an empty record with the right WHACK magic. * this should permit a later mechanism to figure out the * endianess of the file, since we will get records from * other systems for analysis eventually. */ static bool openwhackrecordfile(char *file) { char when[256]; char FQDN[HOST_NAME_MAX + 1]; u_int32_t magic; struct tm tm1, *tm; time_t n; strcpy(FQDN, "unknown host"); gethostname(FQDN, sizeof(FQDN)); strncpy(whackrecordname, file, sizeof(whackrecordname)); whackrecordfile = fopen(whackrecordname, "w"); if(whackrecordfile==NULL) { openswan_log("Failed to open whack record file: '%s'\n" , whackrecordname); return FALSE; } time(&n); tm = localtime_r(&n, &tm1); strftime(when, sizeof(when), "%F %T", tm); fprintf(whackrecordfile, "#!-pluto-whack-file- recorded on %s on %s\n", FQDN, when); magic = WHACK_BASIC_MAGIC; writewhackrecord((char *)&magic, 4); DBG(DBG_CONTROL , DBG_log("started recording whack messages to %s\n" , whackrecordname)); return TRUE; }
/* * we write out an empty record with the right WHACK magic. * this should permit a later mechanism to figure out the * endianess of the file, since we will get records from * other systems for analysis eventually. */ static bool openwhackrecordfile(char *file) { char when[256]; char FQDN[HOST_NAME_MAX + 1]; u_int32_t magic; struct tm tm1, *tm; realtime_t n = realnow(); strcpy(FQDN, "unknown host"); gethostname(FQDN, sizeof(FQDN)); strncpy(whackrecordname, file, sizeof(whackrecordname)-1); whackrecordname[sizeof(whackrecordname)-1] = '\0'; /* ensure NUL termination */ whackrecordfile = fopen(whackrecordname, "w"); if (whackrecordfile == NULL) { libreswan_log("Failed to open whack record file: '%s'", whackrecordname); return FALSE; } tm = localtime_r(&n.real_secs, &tm1); strftime(when, sizeof(when), "%F %T", tm); fprintf(whackrecordfile, "#!-pluto-whack-file- recorded on %s on %s", FQDN, when); magic = WHACK_BASIC_MAGIC; writewhackrecord((char *)&magic, sizeof(magic)); DBG(DBG_CONTROL, DBG_log("started recording whack messages to %s", whackrecordname)); return TRUE; }
static int send_whack_msg_to_file(struct starter_config *cfg, struct whack_message *msg) { static int recno = 0; fprintf(stderr, "writing record %u to whack file\n", ++recno); unsigned int len = serialize_whack_msg(msg); writewhackrecord((char *)msg, len); return 0; }