Changeset 65c65bb in rtems-libbsd
- Timestamp:
- 07/01/16 05:49:52 (7 years ago)
- Branches:
- 5, 5-freebsd-12, 6-freebsd-12, freebsd-9.3, master
- Children:
- 4dec435
- Parents:
- fc26479
- Files:
-
- 2 added
- 7 edited
Legend:
- Unmodified
- Added
- Removed
-
libbsd.py
rfc26479 r65c65bb 149 149 'telnetd/pty.c', 150 150 'telnetd/telnetd.c', 151 'telnetd/telnetd-init.c', 152 'telnetd/telnetd-service.c', 151 153 'sys/dev/tsec/if_tsec_nexus.c', 152 154 ], -
libbsd_waf.py
rfc26479 r65c65bb 1116 1116 'rtemsbsd/telnetd/des.c', 1117 1117 'rtemsbsd/telnetd/pty.c', 1118 'rtemsbsd/telnetd/telnetd-init.c', 1119 'rtemsbsd/telnetd/telnetd-service.c', 1118 1120 'rtemsbsd/telnetd/telnetd.c'] 1119 1121 if bld.get_env()["RTEMS_ARCH"] == "arm": -
rtemsbsd/include/machine/rtems-bsd-config.h
rfc26479 r65c65bb 33 33 * RTEMS_BSD_CONFIG_NET_IF_LAGG : Link Aggregetion and Failover. 34 34 * RTEMS_BSD_CONFIG_NET_IF_VLAN : Virtual LAN. 35 * RTEMS_BSD_CONFIG_SERVICE_TELNETD : Telnet Protocol (TELNET). 36 * RTEMS_BSD_CONFIG_TELNETD_STACK_SIZE : Telnet shell task stack size. 35 37 * RTEMS_BSD_CONFIG_SERVICE_FTPD : File Transfer Protocol (FTP). 36 38 * RTEMS_BSD_CONFIG_BSP_CONFIG : Configure default BSP devices. … … 119 121 120 122 /* 123 * Telnetd 124 */ 125 #if defined(RTEMS_BSD_CONFIG_SERVICE_TELNETD) 126 #if defined(RTEMS_BSD_CONFIG_TELNETD_STACK_SIZE) 127 #define RTEMS_BSD_CFGDECL_TELNETD_STACK_SIZE \ 128 int rtems_telnetd_stack_size = RTEMS_BSD_CONFIG_TELNETD_STACK_SIZE 129 #endif /* RTEMS_BSD_CONFIG_TELNETD_STACK_SIZE */ 130 #define RTEMS_BSD_CFGDECL_TELNETD RTEMS_BSD_RC_CONF_SYSINT(rc_conf_telnetd) 131 #endif /* RTEMS_BSD_CONFIG_SERVICE_TELNETD */ 132 133 /* 121 134 * Configure the system. 122 135 */ … … 146 159 * Create the services. 147 160 */ 161 RTEMS_BSD_CFGDECL_TELNETD; 162 RTEMS_BSD_CFGDECL_TELNETD_STACK_SIZE; 148 163 RTEMS_BSD_CFGDECL_FTPD; 149 164 #endif /* RTEMS_BSD_CONFIG_INIT */ -
rtemsbsd/include/machine/rtems-bsd-rc-conf-services.h
rfc26479 r65c65bb 155 155 * Decls for the handlers. 156 156 */ 157 void rc_conf_net_init(void* arg); /* Installed by default. */ 158 void rc_conf_ftpd_init(void* arg); /* ftpd_enabled="YES" */ 157 void rc_conf_net_init(void* arg); /* Installed by default. */ 158 void rc_conf_telnetd_init(void* arg); /* telnetd_enabled="YES" */ 159 void rc_conf_ftpd_init(void* arg); /* ftpd_enabled="YES" */ 159 160 160 161 /* -
rtemsbsd/include/rtems/telnetd.h
rfc26479 r65c65bb 89 89 90 90 /** 91 * @brief Start the Telnet subsystem with the provided configuration. 92 */ 93 rtems_status_code rtems_telnetd_start(const rtems_telnetd_config_table* config); 94 95 /** 91 96 * @brief Telnet configuration. 92 97 * -
rtemsbsd/telnetd/telnetd.c
rfc26479 r65c65bb 88 88 89 89 /***********************************************************/ 90 static rtems_id telnetd_task_id = RTEMS_ID_NONE; 91 92 rtems_id (*telnetd_spawn_task)( 90 static rtems_telnetd_config_table* telnetd_config; 91 static rtems_id telnetd_task_id; 92 93 /* 94 * chrisj: this variable was global and with no declared interface in a header 95 * file and with no means to set it so I have stopped it being global; 96 * if this breaks any user they will have be to provide a formal 97 * interface to get this change reverted. 98 */ 99 static const rtems_id (*telnetd_spawn_task)( 93 100 const char *, 94 101 unsigned, … … 208 215 209 216 /* we don't redirect stdio as this probably 210 * was started from the console anyway s..217 * was started from the console anyway .. 211 218 */ 212 219 do { 213 if ( rtems_telnetd_config.keep_stdio) {220 if (telnetd_config->keep_stdio) { 214 221 bool start = true; 215 222 char device_name [32]; 216 223 217 224 ttyname_r( 1, device_name, sizeof( device_name)); 218 if ( rtems_telnetd_config.login_check != NULL) {225 if (telnetd_config->login_check != NULL) { 219 226 start = rtems_shell_login_prompt( 220 227 stdin, 221 228 stderr, 222 229 device_name, 223 rtems_telnetd_config.login_check230 telnetd_config->login_check 224 231 ); 225 232 } 226 233 if (start) { 227 rtems_telnetd_config.command( device_name, arg->arg);234 telnetd_config->command( device_name, arg->arg); 228 235 } else { 229 236 syslog( … … 245 252 246 253 arg->devname = devname; 247 arg->arg = rtems_telnetd_config.arg;254 arg->arg = telnetd_config->arg; 248 255 strncpy(arg->peername, peername, sizeof(arg->peername)); 249 256 250 257 telnetd_task_id = telnetd_spawn_task( 251 258 devname, 252 rtems_telnetd_config.priority,253 rtems_telnetd_config.stack_size,259 telnetd_config->priority, 260 telnetd_config->stack_size, 254 261 spawned_shell, 255 262 arg … … 288 295 } 289 296 290 rtems_status_code rtems_telnetd_ initialize( void)291 { 292 if (telnetd_ task_id != RTEMS_ID_NONE) {297 rtems_status_code rtems_telnetd_start(const rtems_telnetd_config_table* config) 298 { 299 if (telnetd_config != NULL) { 293 300 fprintf(stderr, "telnetd already started\n"); 294 301 return RTEMS_RESOURCE_IN_USE; 295 302 } 296 303 297 if ( rtems_telnetd_config.command == NULL) {304 if (config->command == NULL) { 298 305 fprintf(stderr, "telnetd setup with invalid command\n"); 299 306 return RTEMS_IO_ERROR; 300 307 } 301 308 309 telnetd_config = calloc(1, sizeof(*telnetd_config)); 310 if (telnetd_config == NULL) { 311 fprintf(stderr, "telnetd cannot alloc telnetd config table\n"); 312 return RTEMS_NO_MEMORY; 313 } 314 315 302 316 if ( !telnet_pty_initialize() ) { 303 317 fprintf(stderr, "telnetd cannot initialize PTY driver\n"); 318 free(telnetd_config); 319 telnetd_config = NULL; 304 320 return RTEMS_IO_ERROR; 305 321 } 306 322 323 *telnetd_config = *config; 324 307 325 /* Check priority */ 308 if ( rtems_telnetd_config.priority < 2) {309 rtems_telnetd_config.priority = 100;326 if (telnetd_config->priority < 2) { 327 telnetd_config->priority = 100; 310 328 } 311 329 312 330 /* Check stack size */ 313 if ( rtems_telnetd_config.stack_size <= 0) {314 rtems_telnetd_config.stack_size = (size_t)32 * 1024;331 if (telnetd_config->stack_size <= 0) { 332 telnetd_config->stack_size = (size_t)32 * 1024; 315 333 } 316 334 … … 318 336 telnetd_task_id = telnetd_spawn_task( 319 337 "TNTD", 320 rtems_telnetd_config.priority,321 rtems_telnetd_config.stack_size,338 telnetd_config->priority, 339 telnetd_config->stack_size, 322 340 rtems_task_telnetd, 323 341 0 324 342 ); 325 343 if (telnetd_task_id == RTEMS_ID_NONE) { 344 free(telnetd_config); 345 telnetd_config = NULL; 326 346 return RTEMS_IO_ERROR; 327 347 } 328 348 329 349 /* Print status */ 330 if (! rtems_telnetd_config.keep_stdio) {350 if (!telnetd_config->keep_stdio) { 331 351 fprintf( 332 352 stderr, 333 353 "telnetd started with stacksize = %u and priority = %d\n", 334 (unsigned) rtems_telnetd_config.stack_size,335 (unsigned) rtems_telnetd_config.priority354 (unsigned) telnetd_config->stack_size, 355 (unsigned) telnetd_config->priority 336 356 ); 337 357 } … … 387 407 388 408 /* call their routine */ 389 if ( rtems_telnetd_config.login_check != NULL) {409 if (telnetd_config->login_check != NULL) { 390 410 start = rtems_shell_login_prompt( 391 411 stdin, 392 412 stderr, 393 413 arg->devname, 394 rtems_telnetd_config.login_check414 telnetd_config->login_check 395 415 ); 396 416 login_failed = !start; 397 417 } 398 418 if (start) { 399 rtems_telnetd_config.command( arg->devname, arg->arg);419 telnetd_config->command( arg->devname, arg->arg); 400 420 } 401 421 -
testsuite/rcconf02/test_main.c
rfc26479 r65c65bb 70 70 #include <rtems/shell.h> 71 71 72 #if DEFINE_FOR_TESTING73 #define RCCONF02_HAS_SHELL74 #endif75 76 72 #define TEST_NAME "LIBBSD RC.CONF 2" 77 73 … … 121 117 "\n" \ 122 118 "dhcpcd_options=\"-h foobar\"\n" \ 119 "\n" \ 120 "telnetd_enable=\"YES\"\n" \ 121 "telnetd_options=\"-v -C 10 -P 50 -L\"\n" \ 123 122 "\n" \ 124 123 "ftpd_enable=\"YES\"\n" \ … … 154 153 test_rc_conf_script(); 155 154 156 #if defined(RCCONF02_HAS_SHELL)157 155 rtems_shell_init( 158 156 "SHLL", … … 164 162 NULL 165 163 ); 166 #else167 printf("RCCONF02 sleeping for 10s\n");168 sleep(10);169 #endif /* RCCONF02_HAS_SHELL */170 164 171 165 exit(0); 172 166 } 173 174 /*175 * Optional shell for testing this test.176 */177 #if defined(RCCONF02_HAS_SHELL)178 167 179 168 #define CONFIGURE_SHELL_COMMANDS_INIT … … 215 204 216 205 #include <rtems/shellconfig.h> 217 #endif /* RCCONF02_HAS_SHELL */218 206 219 207 #define RTEMS_BSD_CONFIG_BSP_CONFIG 208 #define RTEMS_BSD_CONFIG_SERVICE_TELNETD 209 #define RTEMS_BSD_CONFIG_TELNETD_STACK_SIZE (16 * 1024) 220 210 #define RTEMS_BSD_CONFIG_SERVICE_FTPD 221 211 212 #define CONFIGURE_MAXIMUM_DRIVERS 32 213 222 214 #include <rtems/bsd/test/default-init.h>
Note: See TracChangeset
for help on using the changeset viewer.