Page MenuHomeFreeBSD

D18443.id51658.diff
No OneTemporary

D18443.id51658.diff

Index: sys/netinet/cc/cc_cdg.c
===================================================================
--- sys/netinet/cc/cc_cdg.c
+++ sys/netinet/cc/cc_cdg.c
@@ -80,8 +80,6 @@
#define CDG_VERSION "0.1"
-#define CAST_PTR_INT(X) (*((int*)(X)))
-
/* Private delay-gradient induced congestion control signal. */
#define CC_CDG_DELAY 0x01000000
@@ -358,22 +356,37 @@
static int
cdg_beta_handler(SYSCTL_HANDLER_ARGS)
{
+ int error;
+ uint32_t new;
+
+ new = *(uint32_t *)arg1;
+ error = sysctl_handle_int(oidp, &new, 0, req);
+ if (error == 0 && req->newptr != NULL) {
+ if (new == 0 || new > 100)
+ error = EINVAL;
+ else
+ *(uint32_t *)arg1 = new;
+ }
- if (req->newptr != NULL &&
- (CAST_PTR_INT(req->newptr) == 0 || CAST_PTR_INT(req->newptr) > 100))
- return (EINVAL);
-
- return (sysctl_handle_int(oidp, arg1, arg2, req));
+ return (error);
}
static int
cdg_exp_backoff_scale_handler(SYSCTL_HANDLER_ARGS)
{
+ int error;
+ uint32_t new;
+
+ new = *(uint32_t *)arg1;
+ error = sysctl_handle_int(oidp, &new, 0, req);
+ if (error == 0 && req->newptr != NULL) {
+ if (new < 1)
+ error = EINVAL;
+ else
+ *(uint32_t *)arg1 = new;
+ }
- if (req->newptr != NULL && CAST_PTR_INT(req->newptr) < 1)
- return (EINVAL);
-
- return (sysctl_handle_int(oidp, arg1, arg2, req));
+ return (error);
}
static inline uint32_t
Index: sys/netinet/cc/cc_chd.c
===================================================================
--- sys/netinet/cc/cc_chd.c
+++ sys/netinet/cc/cc_chd.c
@@ -78,8 +78,6 @@
#include <netinet/khelp/h_ertt.h>
-#define CAST_PTR_INT(X) (*((int*)(X)))
-
/*
* Private signal type for rate based congestion signal.
* See <netinet/cc.h> for appropriate bit-range to use for private signals.
@@ -421,7 +419,7 @@
new = V_chd_loss_fair;
error = sysctl_handle_int(oidp, &new, 0, req);
if (error == 0 && req->newptr != NULL) {
- if (CAST_PTR_INT(req->newptr) > 1)
+ if (new > 1)
error = EINVAL;
else
V_chd_loss_fair = new;
@@ -439,8 +437,7 @@
new = V_chd_pmax;
error = sysctl_handle_int(oidp, &new, 0, req);
if (error == 0 && req->newptr != NULL) {
- if (CAST_PTR_INT(req->newptr) == 0 ||
- CAST_PTR_INT(req->newptr) > 100)
+ if (new == 0 || new > 100)
error = EINVAL;
else
V_chd_pmax = new;
@@ -458,7 +455,7 @@
new = V_chd_qthresh;
error = sysctl_handle_int(oidp, &new, 0, req);
if (error == 0 && req->newptr != NULL) {
- if (CAST_PTR_INT(req->newptr) <= V_chd_qmin)
+ if (new <= V_chd_qmin)
error = EINVAL;
else
V_chd_qthresh = new;
Index: sys/netinet/cc/cc_dctcp.c
===================================================================
--- sys/netinet/cc/cc_dctcp.c
+++ sys/netinet/cc/cc_dctcp.c
@@ -56,8 +56,6 @@
#include <netinet/cc/cc.h>
#include <netinet/cc/cc_module.h>
-#define CAST_PTR_INT(X) (*((int*)(X)))
-
#define MAX_ALPHA_VALUE 1024
VNET_DEFINE_STATIC(uint32_t, dctcp_alpha) = 0;
#define V_dctcp_alpha VNET(dctcp_alpha)
@@ -400,7 +398,7 @@
new = V_dctcp_alpha;
error = sysctl_handle_int(oidp, &new, 0, req);
if (error == 0 && req->newptr != NULL) {
- if (CAST_PTR_INT(req->newptr) > 1)
+ if (new > 1)
error = EINVAL;
else {
if (new > MAX_ALPHA_VALUE)
@@ -422,7 +420,7 @@
new = V_dctcp_shift_g;
error = sysctl_handle_int(oidp, &new, 0, req);
if (error == 0 && req->newptr != NULL) {
- if (CAST_PTR_INT(req->newptr) > 1)
+ if (new > 1)
error = EINVAL;
else
V_dctcp_shift_g = new;
@@ -440,7 +438,7 @@
new = V_dctcp_slowstart;
error = sysctl_handle_int(oidp, &new, 0, req);
if (error == 0 && req->newptr != NULL) {
- if (CAST_PTR_INT(req->newptr) > 1)
+ if (new > 1)
error = EINVAL;
else
V_dctcp_slowstart = new;
Index: sys/netinet/cc/cc_hd.c
===================================================================
--- sys/netinet/cc/cc_hd.c
+++ sys/netinet/cc/cc_hd.c
@@ -79,8 +79,6 @@
#include <netinet/khelp/h_ertt.h>
-#define CAST_PTR_INT(X) (*((int*)(X)))
-
/* Largest possible number returned by random(). */
#define RANDOM_MAX INT_MAX
@@ -188,8 +186,7 @@
new = V_hd_pmax;
error = sysctl_handle_int(oidp, &new, 0, req);
if (error == 0 && req->newptr != NULL) {
- if (CAST_PTR_INT(req->newptr) == 0 ||
- CAST_PTR_INT(req->newptr) > 100)
+ if (new == 0 || new > 100)
error = EINVAL;
else
V_hd_pmax = new;
@@ -207,7 +204,7 @@
new = V_hd_qmin;
error = sysctl_handle_int(oidp, &new, 0, req);
if (error == 0 && req->newptr != NULL) {
- if (CAST_PTR_INT(req->newptr) > V_hd_qthresh)
+ if (new > V_hd_qthresh)
error = EINVAL;
else
V_hd_qmin = new;
@@ -225,8 +222,7 @@
new = V_hd_qthresh;
error = sysctl_handle_int(oidp, &new, 0, req);
if (error == 0 && req->newptr != NULL) {
- if (CAST_PTR_INT(req->newptr) < 1 ||
- CAST_PTR_INT(req->newptr) < V_hd_qmin)
+ if (new < 1 || new < V_hd_qmin)
error = EINVAL;
else
V_hd_qthresh = new;
Index: sys/netinet/cc/cc_newreno.c
===================================================================
--- sys/netinet/cc/cc_newreno.c
+++ sys/netinet/cc/cc_newreno.c
@@ -79,8 +79,6 @@
static MALLOC_DEFINE(M_NEWRENO, "newreno data",
"newreno beta values");
-#define CAST_PTR_INT(X) (*((int*)(X)))
-
static void newreno_cb_destroy(struct cc_var *ccv);
static void newreno_ack_received(struct cc_var *ccv, uint16_t type);
static void newreno_after_idle(struct cc_var *ccv);
@@ -364,15 +362,21 @@
static int
newreno_beta_handler(SYSCTL_HANDLER_ARGS)
{
+ int error;
+ uint32_t new;
- if (req->newptr != NULL ) {
+ new = *(uint32_t *)arg1;
+ error = sysctl_handle_int(oidp, &new, 0, req);
+ if (error == 0 && req->newptr != NULL ) {
if (arg1 == &VNET_NAME(newreno_beta_ecn) && !V_cc_do_abe)
- return (EACCES);
- if (CAST_PTR_INT(req->newptr) <= 0 || CAST_PTR_INT(req->newptr) > 100)
- return (EINVAL);
+ error = EACCES;
+ else if (new <= 0 || new > 100)
+ error = EINVAL;
+ else
+ *(uint32_t *)arg1 = new;
}
- return (sysctl_handle_int(oidp, arg1, arg2, req));
+ return (error);
}
SYSCTL_DECL(_net_inet_tcp_cc_newreno);
Index: sys/netinet/cc/cc_vegas.c
===================================================================
--- sys/netinet/cc/cc_vegas.c
+++ sys/netinet/cc/cc_vegas.c
@@ -79,8 +79,6 @@
#include <netinet/khelp/h_ertt.h>
-#define CAST_PTR_INT(X) (*((int*)(X)))
-
/*
* Private signal type for rate based congestion signal.
* See <netinet/cc.h> for appropriate bit-range to use for private signals.
@@ -260,8 +258,7 @@
new = V_vegas_alpha;
error = sysctl_handle_int(oidp, &new, 0, req);
if (error == 0 && req->newptr != NULL) {
- if (CAST_PTR_INT(req->newptr) < 1 ||
- CAST_PTR_INT(req->newptr) > V_vegas_beta)
+ if (new < 1 || new > V_vegas_beta)
error = EINVAL;
else
V_vegas_alpha = new;
@@ -279,8 +276,7 @@
new = V_vegas_beta;
error = sysctl_handle_int(oidp, &new, 0, req);
if (error == 0 && req->newptr != NULL) {
- if (CAST_PTR_INT(req->newptr) < 1 ||
- CAST_PTR_INT(req->newptr) < V_vegas_alpha)
+ if (new < 1 || new < V_vegas_alpha)
error = EINVAL;
else
V_vegas_beta = new;
Index: sys/netinet/siftr.c
===================================================================
--- sys/netinet/siftr.c
+++ sys/netinet/siftr.c
@@ -152,8 +152,6 @@
#endif
/* useful macros */
-#define CAST_PTR_INT(X) (*((int*)(X)))
-
#define UPPER_SHORT(X) (((X) & 0xFFFF0000) >> 16)
#define LOWER_SHORT(X) ((X) & 0x0000FFFF)
@@ -1442,22 +1440,22 @@
static int
siftr_sysctl_enabled_handler(SYSCTL_HANDLER_ARGS)
{
- if (req->newptr == NULL)
- goto skip;
-
- /* If the value passed in isn't 0 or 1, return an error. */
- if (CAST_PTR_INT(req->newptr) != 0 && CAST_PTR_INT(req->newptr) != 1)
- return (1);
-
- /* If we are changing state (0 to 1 or 1 to 0). */
- if (CAST_PTR_INT(req->newptr) != siftr_enabled )
- if (siftr_manage_ops(CAST_PTR_INT(req->newptr))) {
- siftr_manage_ops(SIFTR_DISABLE);
- return (1);
+ int error;
+ uint32_t new;
+
+ new = siftr_enabled;
+ error = sysctl_handle_int(oidp, &new, 0, req);
+ if (error != 0 && req->newptr != NULL) {
+ if (new != 0 && new != 1)
+ return (EINVAL);
+ else if (new != siftr_enabled) {
+ error = siftr_manage_ops(new);
+ if (error != 0)
+ siftr_manage_ops(SIFTR_DISABLE);
}
+ }
-skip:
- return (sysctl_handle_int(oidp, arg1, arg2, req));
+ return (error);
}

File Metadata

Mime Type
text/plain
Expires
Mon, Mar 10, 10:32 PM (17 h, 11 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
17090233
Default Alt Text
D18443.id51658.diff (8 KB)

Event Timeline