From f1433f7d5fc389749ceb769dd8ce413ab6e82ee8 Mon Sep 17 00:00:00 2001 From: Michael Richardson Date: Sat, 10 May 2014 17:19:51 -0400 Subject: [PATCH] tunslip6: option to turn off processing of IPA= address allocation --- tools/tunslip6.c | 31 ++++++++++++++++++------------- 1 file changed, 18 insertions(+), 13 deletions(-) diff --git a/tools/tunslip6.c b/tools/tunslip6.c index b4390eacf..e2413cb88 100644 --- a/tools/tunslip6.c +++ b/tools/tunslip6.c @@ -704,13 +704,14 @@ main(int argc, char **argv) const char *port = NULL; const char *prog; int baudrate = -2; + int ipa_enable = 1; int tap = 0; slipfd = 0; prog = argv[0]; setvbuf(stdout, NULL, _IOLBF, 0); /* Line buffered output. */ - while((c = getopt(argc, argv, "B:HLPhs:t:v::d::a:p:T")) != -1) { + while((c = getopt(argc, argv, "B:HILPhs:t:v::d::a:p:T")) != -1) { switch(c) { case 'B': baudrate = atoi(optarg); @@ -736,6 +737,11 @@ main(int argc, char **argv) } break; + case 'I': + ipa_enable = 0; + fprintf(stderr, "Will not inquire about IP address using IPA=\n"); + break; + case 't': if(strncmp("/dev/", optarg, 5) == 0) { strncpy(tundev, optarg + 5, sizeof(tundev)); @@ -943,16 +949,15 @@ exit(1); FD_ZERO(&rset); FD_ZERO(&wset); -/* do not send IPA all the time... - add get MAC later... */ -/* if(got_sigalarm) { */ -/* /\* Send "?IPA". *\/ */ -/* slip_send(slipfd, '?'); */ -/* slip_send(slipfd, 'I'); */ -/* slip_send(slipfd, 'P'); */ -/* slip_send(slipfd, 'A'); */ -/* slip_send(slipfd, SLIP_END); */ -/* got_sigalarm = 0; */ -/* } */ + if(got_sigalarm && ipa_enable) { + /* Send "?IPA". */ + slip_send(slipfd, '?'); + slip_send(slipfd, 'I'); + slip_send(slipfd, 'P'); + slip_send(slipfd, 'A'); + slip_send(slipfd, SLIP_END); + got_sigalarm = 0; + } if(!slip_empty()) { /* Anything to flush? */ FD_SET(slipfd, &wset); @@ -977,7 +982,7 @@ exit(1); if(FD_ISSET(slipfd, &wset)) { slip_flushbuf(slipfd); - sigalarm_reset(); + if(ipa_enable) sigalarm_reset(); } /* Optional delay between outgoing packets */ @@ -995,7 +1000,7 @@ exit(1); if(slip_empty() && FD_ISSET(tunfd, &rset)) { size=tun_to_serial(tunfd, slipfd); slip_flushbuf(slipfd); - sigalarm_reset(); + if(ipa_enable) sigalarm_reset(); if(basedelay) { struct timeval tv; gettimeofday(&tv, NULL) ;