|
Lines 106-112
Link Here
|
| 106 |
int ftxfield_tocflow(u_int64 xfields, u_int32 *cfmask); |
106 |
int ftxfield_tocflow(u_int64 xfields, u_int32 *cfmask); |
| 107 |
|
107 |
|
| 108 |
int fmt_xfields_val(char *fmt_buf, char *rec, struct fts3rec_offsets *fo, |
108 |
int fmt_xfields_val(char *fmt_buf, char *rec, struct fts3rec_offsets *fo, |
| 109 |
u_int64 xfields, int quote); |
109 |
u_int64 xfields, int quote, int ipv4form); |
| 110 |
int fmt_xfields_type(char *buf, u_int64 xfield); |
110 |
int fmt_xfields_type(char *buf, u_int64 xfield); |
| 111 |
|
111 |
|
| 112 |
void usage(void); |
112 |
void usage(void); |
|
Lines 663-670
Link Here
|
| 663 |
|
663 |
|
| 664 |
while ((rec = ftio_read(ftio))) { |
664 |
while ((rec = ftio_read(ftio))) { |
| 665 |
|
665 |
|
| 666 |
len = fmt_xfields_val(fmt_buf, rec, &fo, opt->ft_mask, 0); |
666 |
len = fmt_xfields_val(fmt_buf, rec, &fo, opt->ft_mask, 0, 0); |
| 667 |
|
|
|
| 668 |
if (len) |
667 |
if (len) |
| 669 |
printf("%s\n", fmt_buf); |
668 |
printf("%s\n", fmt_buf); |
| 670 |
|
669 |
|
|
Lines 691-696
Link Here
|
| 691 |
char *db_host, *db_name, *db_table, *db_user, *db_pwd, *db_tmp, *tmp; |
690 |
char *db_host, *db_name, *db_table, *db_user, *db_pwd, *db_tmp, *tmp; |
| 692 |
int db_port; |
691 |
int db_port; |
| 693 |
int len; |
692 |
int len; |
|
|
693 |
int debug; |
| 694 |
|
694 |
|
| 695 |
MYSQL mysql; |
695 |
MYSQL mysql; |
| 696 |
|
696 |
|
|
Lines 746-753
Link Here
|
| 746 |
/* foreach flow */ |
746 |
/* foreach flow */ |
| 747 |
while ((rec = ftio_read(ftio))) { |
747 |
while ((rec = ftio_read(ftio))) { |
| 748 |
|
748 |
|
| 749 |
len = fmt_xfields_val(values, rec, &fo, opt->ft_mask, 1); |
749 |
bzero(values,sizeof(values)); |
| 750 |
|
750 |
len = fmt_xfields_val(values, rec, &fo, opt->ft_mask, 1,1); |
|
|
751 |
|
| 751 |
/* form SQL query and execute it */ |
752 |
/* form SQL query and execute it */ |
| 752 |
if (len) { |
753 |
if (len) { |
| 753 |
strcpy (query, "INSERT INTO "); |
754 |
strcpy (query, "INSERT INTO "); |
|
Lines 759-767
Link Here
|
| 759 |
strcat (query, ")"); |
760 |
strcat (query, ")"); |
| 760 |
|
761 |
|
| 761 |
if (debug) |
762 |
if (debug) |
| 762 |
fprintf(stderr, "field=%s\n val=%s\n query=%s\n", fields, values, |
763 |
fprintf(stderr, "field=%s\n val=%s\n query=%s\n", fields, values, query); |
| 763 |
query); |
764 |
|
| 764 |
|
|
|
| 765 |
if (mysql_real_query(&mysql, query, strlen(query)) != 0) |
765 |
if (mysql_real_query(&mysql, query, strlen(query)) != 0) |
| 766 |
fterr_warnx("mysql_real_query(): %s", mysql_error(&mysql)); |
766 |
fterr_warnx("mysql_real_query(): %s", mysql_error(&mysql)); |
| 767 |
|
767 |
|
|
Lines 1168-1174
Link Here
|
| 1168 |
|
1168 |
|
| 1169 |
|
1169 |
|
| 1170 |
int fmt_xfields_val(char *fmt_buf, char *rec, struct fts3rec_offsets *fo, |
1170 |
int fmt_xfields_val(char *fmt_buf, char *rec, struct fts3rec_offsets *fo, |
| 1171 |
u_int64 xfields, int quote) |
1171 |
u_int64 xfields, int quote, int ipv4form) |
| 1172 |
{ |
1172 |
{ |
| 1173 |
int comma, len; |
1173 |
int comma, len; |
| 1174 |
|
1174 |
|
|
Lines 1199-1208
Link Here
|
| 1199 |
|
1199 |
|
| 1200 |
if (xfields & FT_XFIELD_EXADDR) { |
1200 |
if (xfields & FT_XFIELD_EXADDR) { |
| 1201 |
if (comma) fmt_buf[len++] = ','; |
1201 |
if (comma) fmt_buf[len++] = ','; |
| 1202 |
if (quote) fmt_buf[len++] = '"'; |
1202 |
if (ipv4form) |
| 1203 |
len += fmt_ipv4(fmt_buf+len, *((u_int32*)(rec+fo->exaddr)), |
1203 |
len += fmt_uint32(fmt_buf+len, *((u_int32*)(rec+fo->exaddr)), |
| 1204 |
FMT_JUST_LEFT); |
1204 |
FMT_JUST_LEFT); |
| 1205 |
if (quote) fmt_buf[len++] = '"'; |
1205 |
else { |
|
|
1206 |
if (quote) fmt_buf[len++] = '"'; |
| 1207 |
len += fmt_ipv4(fmt_buf+len, *((u_int32*)(rec+fo->exaddr)), |
| 1208 |
FMT_JUST_LEFT); |
| 1209 |
if (quote) fmt_buf[len++] = '"'; |
| 1210 |
} |
| 1206 |
comma = 1; |
1211 |
comma = 1; |
| 1207 |
} |
1212 |
} |
| 1208 |
|
1213 |
|
|
Lines 1257-1284
Link Here
|
| 1257 |
|
1262 |
|
| 1258 |
if (xfields & FT_XFIELD_SRCADDR) { |
1263 |
if (xfields & FT_XFIELD_SRCADDR) { |
| 1259 |
if (comma) fmt_buf[len++] = ','; |
1264 |
if (comma) fmt_buf[len++] = ','; |
| 1260 |
if (quote) fmt_buf[len++] = '"'; |
1265 |
if (ipv4form) |
| 1261 |
len += fmt_ipv4(fmt_buf+len, *((u_int32*)(rec+fo->srcaddr)), |
1266 |
len += fmt_uint32(fmt_buf+len, *((u_int32*)(rec+fo->srcaddr)), |
| 1262 |
FMT_JUST_LEFT); |
1267 |
FMT_JUST_LEFT); |
| 1263 |
if (quote) fmt_buf[len++] = '"'; |
1268 |
else { |
|
|
1269 |
if (quote) fmt_buf[len++] = '"'; |
| 1270 |
len += fmt_ipv4(fmt_buf+len, *((u_int32*)(rec+fo->srcaddr)), |
| 1271 |
FMT_JUST_LEFT); |
| 1272 |
if (quote) fmt_buf[len++] = '"'; |
| 1273 |
} |
| 1264 |
comma = 1; |
1274 |
comma = 1; |
| 1265 |
} |
1275 |
} |
| 1266 |
|
1276 |
|
| 1267 |
if (xfields & FT_XFIELD_DSTADDR) { |
1277 |
if (xfields & FT_XFIELD_DSTADDR) { |
| 1268 |
if (comma) fmt_buf[len++] = ','; |
1278 |
if (comma) fmt_buf[len++] = ','; |
| 1269 |
if (quote) fmt_buf[len++] = '"'; |
1279 |
if (ipv4form) |
| 1270 |
len += fmt_ipv4(fmt_buf+len, *((u_int32*)(rec+fo->dstaddr)), |
1280 |
len += fmt_uint32(fmt_buf+len, *((u_int32*)(rec+fo->dstaddr)), |
| 1271 |
FMT_JUST_LEFT); |
1281 |
FMT_JUST_LEFT); |
| 1272 |
if (quote) fmt_buf[len++] = '"'; |
1282 |
else { |
|
|
1283 |
if (quote) fmt_buf[len++] = '"'; |
| 1284 |
len += fmt_ipv4(fmt_buf+len, *((u_int32*)(rec+fo->dstaddr)), |
| 1285 |
FMT_JUST_LEFT); |
| 1286 |
if (quote) fmt_buf[len++] = '"'; |
| 1287 |
} |
| 1273 |
comma = 1; |
1288 |
comma = 1; |
| 1274 |
} |
1289 |
} |
| 1275 |
|
1290 |
|
| 1276 |
if (xfields & FT_XFIELD_NEXTHOP) { |
1291 |
if (xfields & FT_XFIELD_NEXTHOP) { |
| 1277 |
if (comma) fmt_buf[len++] = ','; |
1292 |
if (comma) fmt_buf[len++] = ','; |
| 1278 |
if (quote) fmt_buf[len++] = '"'; |
1293 |
if (ipv4form) |
| 1279 |
len += fmt_ipv4(fmt_buf+len, *((u_int32*)(rec+fo->nexthop)), |
1294 |
len += fmt_uint32(fmt_buf+len, *((u_int32*)(rec+fo->nexthop)), |
| 1280 |
FMT_JUST_LEFT); |
1295 |
FMT_JUST_LEFT); |
| 1281 |
if (quote) fmt_buf[len++] = '"'; |
1296 |
else { |
|
|
1297 |
if (quote) fmt_buf[len++] = '"'; |
| 1298 |
len += fmt_ipv4(fmt_buf+len, *((u_int32*)(rec+fo->nexthop)), |
| 1299 |
FMT_JUST_LEFT); |
| 1300 |
if (quote) fmt_buf[len++] = '"'; |
| 1301 |
} |
| 1282 |
comma = 1; |
1302 |
comma = 1; |
| 1283 |
} |
1303 |
} |
| 1284 |
|
1304 |
|
|
Lines 1375-1393
Link Here
|
| 1375 |
|
1395 |
|
| 1376 |
if (xfields & FT_XFIELD_PEER_NEXTHOP) { |
1396 |
if (xfields & FT_XFIELD_PEER_NEXTHOP) { |
| 1377 |
if (comma) fmt_buf[len++] = ','; |
1397 |
if (comma) fmt_buf[len++] = ','; |
| 1378 |
if (quote) fmt_buf[len++] = '"'; |
1398 |
if (ipv4form) |
| 1379 |
len += fmt_ipv4(fmt_buf+len, *((u_int32*)(rec+fo->peer_nexthop)), |
1399 |
len += fmt_uint32(fmt_buf+len, *((u_int32*)(rec+fo->peer_nexthop)), |
| 1380 |
FMT_JUST_LEFT); |
1400 |
FMT_JUST_LEFT); |
| 1381 |
if (quote) fmt_buf[len++] = '"'; |
1401 |
else { |
|
|
1402 |
if (quote) fmt_buf[len++] = '"'; |
| 1403 |
len += fmt_ipv4(fmt_buf+len, *((u_int32*)(rec+fo->peer_nexthop)), |
| 1404 |
FMT_JUST_LEFT); |
| 1405 |
if (quote) fmt_buf[len++] = '"'; |
| 1406 |
} |
| 1382 |
comma = 1; |
1407 |
comma = 1; |
| 1383 |
} |
1408 |
} |
| 1384 |
|
1409 |
|
| 1385 |
if (xfields & FT_XFIELD_ROUTER_SC) { |
1410 |
if (xfields & FT_XFIELD_ROUTER_SC) { |
| 1386 |
if (comma) fmt_buf[len++] = ','; |
1411 |
if (comma) fmt_buf[len++] = ','; |
| 1387 |
if (quote) fmt_buf[len++] = '"'; |
1412 |
if (ipv4form) |
| 1388 |
len += fmt_ipv4(fmt_buf+len, *((u_int32*)(rec+fo->router_sc)), |
1413 |
len += fmt_uint32(fmt_buf+len, *((u_int32*)(rec+fo->router_sc)), |
| 1389 |
FMT_JUST_LEFT); |
1414 |
FMT_JUST_LEFT); |
| 1390 |
if (quote) fmt_buf[len++] = '"'; |
1415 |
else { |
|
|
1416 |
if (quote) fmt_buf[len++] = '"'; |
| 1417 |
len += fmt_ipv4(fmt_buf+len, *((u_int32*)(rec+fo->router_sc)), |
| 1418 |
FMT_JUST_LEFT); |
| 1419 |
if (quote) fmt_buf[len++] = '"'; |
| 1420 |
} |
| 1391 |
comma = 1; |
1421 |
comma = 1; |
| 1392 |
} |
1422 |
} |
| 1393 |
|
1423 |
|