MCPcopy Create free account
hub / github.com/F-Stack/f-stack / set_metric

Function set_metric

tools/route/route.c:830–866  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

828}
829
830static void
831set_metric(char *value, int key)
832{
833 int flag = 0;
834 char *endptr;
835 u_long noval, *valp = &noval;
836
837 switch (key) {
838#define caseof(x, y, z) case x: valp = &rt_metrics.z; flag = y; break
839 caseof(K_MTU, RTV_MTU, rmx_mtu);
840 caseof(K_HOPCOUNT, RTV_HOPCOUNT, rmx_hopcount);
841 caseof(K_EXPIRE, RTV_EXPIRE, rmx_expire);
842 caseof(K_RECVPIPE, RTV_RPIPE, rmx_recvpipe);
843 caseof(K_SENDPIPE, RTV_SPIPE, rmx_sendpipe);
844 caseof(K_SSTHRESH, RTV_SSTHRESH, rmx_ssthresh);
845 caseof(K_RTT, RTV_RTT, rmx_rtt);
846 caseof(K_RTTVAR, RTV_RTTVAR, rmx_rttvar);
847 caseof(K_WEIGHT, RTV_WEIGHT, rmx_weight);
848 }
849 rtm_inits |= flag;
850 if (lockrest || locking)
851 rt_metrics.rmx_locks |= flag;
852 if (locking)
853 locking = 0;
854 errno = 0;
855 *valp = strtol(value, &endptr, 0);
856 if (errno == 0 && *endptr != '\0')
857 errno = EINVAL;
858 if (errno)
859 err(EX_USAGE, "%s", value);
860 if (flag & RTV_EXPIRE && (value[0] == '+' || value[0] == '-')) {
861 struct timespec ts;
862
863 clock_gettime(CLOCK_REALTIME_FAST, &ts);
864 *valp += ts.tv_sec;
865 }
866}
867
868#define F_ISHOST 0x01
869#define F_FORCENET 0x02

Callers 1

newrouteFunction · 0.85

Calls 1

strtolFunction · 0.85

Tested by

no test coverage detected