* Sysctl handler to show and change the default CC algorithm. */
| 90 | * Sysctl handler to show and change the default CC algorithm. |
| 91 | */ |
| 92 | static int |
| 93 | cc_default_algo(SYSCTL_HANDLER_ARGS) |
| 94 | { |
| 95 | char default_cc[TCP_CA_NAME_MAX]; |
| 96 | struct cc_algo *funcs; |
| 97 | int error; |
| 98 | |
| 99 | /* Get the current default: */ |
| 100 | CC_LIST_RLOCK(); |
| 101 | strlcpy(default_cc, CC_DEFAULT()->name, sizeof(default_cc)); |
| 102 | CC_LIST_RUNLOCK(); |
| 103 | |
| 104 | error = sysctl_handle_string(oidp, default_cc, sizeof(default_cc), req); |
| 105 | |
| 106 | /* Check for error or no change */ |
| 107 | if (error != 0 || req->newptr == NULL) |
| 108 | goto done; |
| 109 | |
| 110 | error = ESRCH; |
| 111 | |
| 112 | /* Find algo with specified name and set it to default. */ |
| 113 | CC_LIST_RLOCK(); |
| 114 | STAILQ_FOREACH(funcs, &cc_list, entries) { |
| 115 | if (strncmp(default_cc, funcs->name, sizeof(default_cc))) |
| 116 | continue; |
| 117 | V_default_cc_ptr = funcs; |
| 118 | error = 0; |
| 119 | break; |
| 120 | } |
| 121 | CC_LIST_RUNLOCK(); |
| 122 | done: |
| 123 | return (error); |
| 124 | } |
| 125 | |
| 126 | /* |
| 127 | * Sysctl handler to display the list of available CC algorithms. |
nothing calls this directly
no test coverage detected