- struct param_radius_account acct = { &tunnel[session[s].tunnel], &session[s], &p };
- run_plugins(PLUGIN_RADIUS_ACCOUNT, &acct);
+ *p = 49; // acct-terminate-cause
+ p[1] = 6;
+ *(uint32_t *) (p + 2) = htonl(radius[r].term_cause);
+ p += p[1];
+
+ if (radius[r].term_msg)
+ {
+ *p = 26; // vendor-specific
+ *(uint32_t *) (p + 2) = htonl(9); // Cisco
+ p[6] = 1; // Cisco-AVPair
+ p[7] = 2 + sprintf((char *) p + 8, "disc-cause-ext=%s", radius[r].term_msg);
+ p[1] = p[7] + 6;
+ p += p[1];
+ }