Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/srv/net/inetsrv/inetsrv.c

    r4c6fd56 r3a4c6d9  
    11/*
    2  * Copyright (c) 2023 Jiri Svoboda
     2 * Copyright (c) 2025 Jiri Svoboda
    33 * All rights reserved.
    44 *
     
    7979};
    8080
     81static const char *inet_cfg_path = "/w/cfg/inetsrv.sif";
     82
    8183static FIBRIL_MUTEX_INITIALIZE(client_list_lock);
    8284static LIST_INITIALIZE(client_list);
     85inet_cfg_t *cfg;
    8386
    8487static void inet_default_conn(ipc_call_t *, void *);
     
    8689static errno_t inet_init(void)
    8790{
     91        port_id_t port;
     92        errno_t rc;
    8893        loc_srv_t *srv;
    8994
    9095        log_msg(LOG_DEFAULT, LVL_DEBUG, "inet_init()");
    9196
    92         port_id_t port;
    93         errno_t rc = async_create_port(INTERFACE_INET,
     97        rc = inet_link_discovery_start();
     98        if (rc != EOK)
     99                return rc;
     100
     101        rc = inet_cfg_open(inet_cfg_path, &cfg);
     102        if (rc != EOK)
     103                return rc;
     104
     105        rc = async_create_port(INTERFACE_INET,
    94106            inet_default_conn, NULL, &port);
    95107        if (rc != EOK)
    96108                return rc;
    97109
    98         rc = async_create_port(INTERFACE_INETCFG,
    99             inet_cfg_conn, NULL, &port);
    100         if (rc != EOK)
    101                 return rc;
    102 
    103         rc = async_create_port(INTERFACE_INETPING,
    104             inetping_conn, NULL, &port);
    105         if (rc != EOK)
    106                 return rc;
     110        rc = async_port_create_interface(port, INTERFACE_INETCFG,
     111            inet_cfg_conn, NULL);
     112        if (rc != EOK) {
     113                async_port_destroy(port);
     114                return rc;
     115        }
     116
     117        rc = async_port_create_interface(port, INTERFACE_INETPING,
     118            inetping_conn, NULL);
     119        if (rc != EOK) {
     120                async_port_destroy(port);
     121                return rc;
     122        }
    107123
    108124        rc = loc_server_register(NAME, &srv);
    109125        if (rc != EOK) {
     126                async_port_destroy(port);
    110127                log_msg(LOG_DEFAULT, LVL_ERROR, "Failed registering server: %s.", str_error(rc));
    111128                return EEXIST;
     
    113130
    114131        service_id_t sid;
    115         rc = loc_service_register(srv, SERVICE_NAME_INET, &sid);
    116         if (rc != EOK) {
     132        rc = loc_service_register(srv, SERVICE_NAME_INET, port, &sid);
     133        if (rc != EOK) {
     134                async_port_destroy(port);
    117135                loc_server_unregister(srv);
    118136                log_msg(LOG_DEFAULT, LVL_ERROR, "Failed registering service: %s.", str_error(rc));
     
    194212
    195213        /* Route packet using source/destination addresses */
    196 
    197214        rc = inet_find_dir(&dgram->src, &dgram->dest, dgram->tos, &dir);
    198215        if (rc != EOK)
     
    529546                        dgram.data = packet->data;
    530547                        dgram.size = packet->size;
    531 
    532548                        return inet_recv_dgram_local(&dgram, packet->proto);
    533549                } else {
     
    556572
    557573        printf(NAME ": Accepting connections.\n");
     574
    558575        task_retval(0);
     576
     577        (void)inet_link_autoconf();
    559578        async_manager();
    560579
Note: See TracChangeset for help on using the changeset viewer.