[Swan-dev] DPD code mystery

D. Hugh Redelmeier hugh at mimosa.com
Mon Oct 9 02:07:53 UTC 2017


Can someone who understands DPD have a look at this?

in complete_v1_state_transition:

		/*
		 * make sure that a DPD event gets created for a new phase 1
		 * SA.
		 */
		if (IS_ISAKMP_SA_ESTABLISHED(st->st_state)) {
			if (deltasecs(st->st_connection->dpd_delay) > 0 &&
			    deltasecs(st->st_connection->dpd_timeout) > 0) {
				/* don't ignore failure */
				/* ??? in fact, we do ignore this:
				 * result is NEVER used
				 * (clang 3.4 noticed this)
				 */
				stf_status s = dpd_init(st);

				pexpect(s != STF_FAIL);
				if (s == STF_FAIL)
					result = STF_FAIL; /* ??? fall through !?! */
				/* ??? result not subsequently used */
			}
		}

The code claims that failure should not be ignored, and then ignores
it.  The code has been like this for years.

see 98eed4a91ea93e69807f1236b82f61325c4c831f
and 993e9312f195f54a3e3a00126aaf926ad566e2ae


More information about the Swan-dev mailing list