Page Menu
Home
FreeBSD
Search
Configure Global Search
Log In
Files
F111894444
D18443.id51658.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Flag For Later
Award Token
Size
8 KB
Referenced Files
None
Subscribers
None
D18443.id51658.diff
View Options
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
Details
Attached
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)
Attached To
Mode
D18443: Fix bugs in plugable CC algorithm and siftr sysctls.
Attached
Detach File
Event Timeline
Log In to Comment