Allow ``set urgent none'' to disable all urgent ports and IPTOS_LOWDELAY

prioritisation.

Requested by: luigi
This commit is contained in:
Brian Somers 2000-06-08 20:07:48 +00:00
parent ec8146d60d
commit 4c24043766
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=61430
6 changed files with 30 additions and 5 deletions

View File

@ -1855,9 +1855,11 @@ SetVariable(struct cmdargs const *arg)
case VAR_URGENTPORTS:
if (arg->argn == arg->argc) {
ipcp_SetUrgentTOS(&arg->bundle->ncp.ipcp);
ipcp_ClearUrgentTcpPorts(&arg->bundle->ncp.ipcp);
ipcp_ClearUrgentUdpPorts(&arg->bundle->ncp.ipcp);
} else if (!strcasecmp(arg->argv[arg->argn], "udp")) {
ipcp_SetUrgentTOS(&arg->bundle->ncp.ipcp);
if (arg->argn == arg->argc - 1)
ipcp_ClearUrgentUdpPorts(&arg->bundle->ncp.ipcp);
else for (f = arg->argn + 1; f < arg->argc; f++)
@ -1871,7 +1873,13 @@ SetVariable(struct cmdargs const *arg)
ipcp_ClearUrgentUdpPorts(&arg->bundle->ncp.ipcp);
ipcp_AddUrgentUdpPort(&arg->bundle->ncp.ipcp, atoi(arg->argv[f]));
}
} else if (arg->argn == arg->argc - 1 &&
!strcasecmp(arg->argv[arg->argn], "none")) {
ipcp_ClearUrgentTcpPorts(&arg->bundle->ncp.ipcp);
ipcp_ClearUrgentUdpPorts(&arg->bundle->ncp.ipcp);
ipcp_ClearUrgentTOS(&arg->bundle->ncp.ipcp);
} else {
ipcp_SetUrgentTOS(&arg->bundle->ncp.ipcp);
first = arg->argn;
if (!strcasecmp(arg->argv[first], "tcp") && ++first == arg->argc)
ipcp_ClearUrgentTcpPorts(&arg->bundle->ncp.ipcp);

View File

@ -475,7 +475,7 @@ PacketCheck(struct bundle *bundle, char *cp, int nb, struct filter *filter)
case IPPROTO_UDP:
uh = (struct udphdr *) ptop;
if (pip->ip_tos == IPTOS_LOWDELAY)
if (pip->ip_tos == IPTOS_LOWDELAY && bundle->ncp.ipcp.cfg.urgent.tos)
pri++;
if ((ntohs(pip->ip_off) & IP_OFFMASK) == 0 &&
@ -545,7 +545,7 @@ PacketCheck(struct bundle *bundle, char *cp, int nb, struct filter *filter)
case IPPROTO_TCP:
th = (struct tcphdr *) ptop;
if (pip->ip_tos == IPTOS_LOWDELAY)
if (pip->ip_tos == IPTOS_LOWDELAY && bundle->ncp.ipcp.cfg.urgent.tos)
pri++;
if ((ntohs(pip->ip_off) & IP_OFFMASK) == 0 &&

View File

@ -503,8 +503,9 @@ ipcp_Show(struct cmdargs const *arg)
prompt_Printf(arg->prompt, ", ");
prompt_Printf(arg->prompt, "%u", ipcp->cfg.urgent.udp.port[p]);
}
prompt_Printf(arg->prompt, "\n TOS: %s\n\n",
ipcp->cfg.urgent.tos ? "yes" : "no");
prompt_Printf(arg->prompt, "\n\n");
throughput_disp(&ipcp->throughput, arg->prompt);
return 0;
@ -571,6 +572,7 @@ ipcp_Init(struct ipcp *ipcp, struct bundle *bundle, struct link *l,
ipcp->cfg.urgent.tcp.port = (u_short *)malloc(NDEFTCPPORTS * sizeof(u_short));
memcpy(ipcp->cfg.urgent.tcp.port, default_urgent_tcp_ports,
NDEFTCPPORTS * sizeof(u_short));
ipcp->cfg.urgent.tos = 1;
ipcp->cfg.urgent.udp.nports = ipcp->cfg.urgent.udp.maxports = NDEFUDPPORTS;
ipcp->cfg.urgent.udp.port = (u_short *)malloc(NDEFUDPPORTS * sizeof(u_short));

View File

@ -77,6 +77,7 @@ struct ipcp {
struct {
struct port_range tcp, udp; /* The range of urgent ports */
unsigned tos : 1; /* Urgent IPTOS_LOWDELAY packets ? */
} urgent;
struct fsm_retry fsm; /* How often/frequently to resend requests */
@ -163,3 +164,5 @@ extern void ipcp_LoadDNS(struct ipcp *);
ipcp_ClearUrgentPorts(&(ipcp)->cfg.urgent.tcp)
#define ipcp_ClearUrgentUdpPorts(ipcp) \
ipcp_ClearUrgentPorts(&(ipcp)->cfg.urgent.udp)
#define ipcp_ClearUrgentTOS(ipcp) (ipcp)->cfg.urgent.tos = 0;
#define ipcp_SetUrgentTOS(ipcp) (ipcp)->cfg.urgent.tos = 1;

View File

@ -4695,7 +4695,7 @@ is specified,
will never idle out before the link has been up for at least that number
of seconds.
.It set urgent Xo
.Op tcp|udp
.Op tcp|udp|none
.Oo Op +|- Ns
.Ar port
.Oc No ...
@ -4734,6 +4734,12 @@ the current list is adjusted, otherwise the list is reassigned.
prefixed with a plus or not prefixed at all are added to the list and
.Ar port Ns No s
prefixed with a minus are removed from the list.
.Pp
If
.Dq none
is specified, all priority port lists are disabled and even
.Dv IPTOS_LOWDELAY
packets are not prioritised.
.It set vj slotcomp on|off
This command tells
.Nm

View File

@ -4695,7 +4695,7 @@ is specified,
will never idle out before the link has been up for at least that number
of seconds.
.It set urgent Xo
.Op tcp|udp
.Op tcp|udp|none
.Oo Op +|- Ns
.Ar port
.Oc No ...
@ -4734,6 +4734,12 @@ the current list is adjusted, otherwise the list is reassigned.
prefixed with a plus or not prefixed at all are added to the list and
.Ar port Ns No s
prefixed with a minus are removed from the list.
.Pp
If
.Dq none
is specified, all priority port lists are disabled and even
.Dv IPTOS_LOWDELAY
packets are not prioritised.
.It set vj slotcomp on|off
This command tells
.Nm