Hola jomeron,
Desde C has de evitar a toda costa el uso de la función system porque es un grave problema de seguridad (es fácil escalar privilegios en función de los permisos del ejecutable). Para hacer lo que deseas has de, si no encuentras una librería que lo haga por ti, abrir un socket y transmitir los datos tú mismo. Una sesión telnet no es más que un socket abierto que redirige a la máquina remota todo lo que le llegue por stdin y envía a stdout todo lo que reciba. De esta forma no tienes más que enviar los datos necesarios y esperar las respuestas adecuadas para realizar las operaciones a través del socket.
Por otro lado, es posible que el router tenga instalado un agente SNMP. Si así es, consulta las MIBs que implementa y si hay alguna opción para gestionar el rearranque empleando esta funcionalidad, que sería lo más correcto.
Recibe un cordial saludo,
Rubén