Changeset 4c6fd56 in mainline for uspace/srv/net


Ignore:
Timestamp:
2023-09-16T19:58:18Z (2 years ago)
Author:
Jiri Svoboda <jiri@…>
Branches:
master, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
7d7f5e3
Parents:
6a0b2cc
git-author:
Jiri Svoboda <jiri@…> (2023-09-16 19:48:07)
git-committer:
Jiri Svoboda <jiri@…> (2023-09-16 19:58:18)
Message:

loc_server_register() should be callable more than once (API only)

Now loc_server_register() returns a pointer to a loc_srv_t object,
that is then passed to loc_service_register() and
loc_service_add_to_cat().

Added loc_server_unregister() that unregisters the server
and frees the loc_srv_t object.

Updated all callers. The implementation, however, is a stub.
It is not actually possible to call loc_server_register() more
than once, yet.

Location:
uspace/srv/net
Files:
9 edited

Legend:

Unmodified
Added
Removed
  • uspace/srv/net/dhcp/main.c

    r6a0b2cc r4c6fd56  
    11/*
    2  * Copyright (c) 2013 Jiri Svoboda
     2 * Copyright (c) 2023 Jiri Svoboda
    33 * All rights reserved.
    44 *
     
    5454static errno_t dhcp_init(void)
    5555{
     56        loc_srv_t *srv;
    5657        errno_t rc;
    5758
     
    6869        async_set_fallback_port_handler(dhcp_client_conn, NULL);
    6970
    70         rc = loc_server_register(NAME);
     71        rc = loc_server_register(NAME, &srv);
    7172        if (rc != EOK) {
    7273                log_msg(LOG_DEFAULT, LVL_ERROR, "Failed registering server: %s.", str_error(rc));
     
    7576
    7677        service_id_t sid;
    77         rc = loc_service_register(SERVICE_NAME_DHCP, &sid);
     78        rc = loc_service_register(srv, SERVICE_NAME_DHCP, &sid);
    7879        if (rc != EOK) {
     80                loc_server_unregister(srv);
    7981                log_msg(LOG_DEFAULT, LVL_ERROR, "Failed registering service: %s.", str_error(rc));
    8082                return EEXIST;
  • uspace/srv/net/dnsrsrv/dnsrsrv.c

    r6a0b2cc r4c6fd56  
    11/*
    2  * Copyright (c) 2013 Jiri Svoboda
     2 * Copyright (c) 2023 Jiri Svoboda
    33 * All rights reserved.
    44 *
     
    5757static errno_t dnsr_init(void)
    5858{
     59        loc_srv_t *srv;
    5960        errno_t rc;
    6061        log_msg(LOG_DEFAULT, LVL_DEBUG, "dnsr_init()");
     
    6869        async_set_fallback_port_handler(dnsr_client_conn, NULL);
    6970
    70         rc = loc_server_register(NAME);
     71        rc = loc_server_register(NAME, &srv);
    7172        if (rc != EOK) {
    7273                log_msg(LOG_DEFAULT, LVL_ERROR, "Failed registering server: %s.", str_error(rc));
     
    7677
    7778        service_id_t sid;
    78         rc = loc_service_register(SERVICE_NAME_DNSR, &sid);
    79         if (rc != EOK) {
     79        rc = loc_service_register(srv, SERVICE_NAME_DNSR, &sid);
     80        if (rc != EOK) {
     81                loc_server_unregister(srv);
    8082                log_msg(LOG_DEFAULT, LVL_ERROR, "Failed registering service: %s.", str_error(rc));
    8183                transport_fini();
  • uspace/srv/net/ethip/ethip.c

    r6a0b2cc r4c6fd56  
    11/*
    2  * Copyright (c) 2021 Jiri Svoboda
     2 * Copyright (c) 2023 Jiri Svoboda
    33 * All rights reserved.
    44 *
     
    7878};
    7979
     80static loc_srv_t *ethip_srv;
     81
    8082static errno_t ethip_init(void)
    8183{
    8284        async_set_fallback_port_handler(ethip_client_conn, NULL);
    8385
    84         errno_t rc = loc_server_register(NAME);
     86        errno_t rc = loc_server_register(NAME, &ethip_srv);
    8587        if (rc != EOK) {
    8688                log_msg(LOG_DEFAULT, LVL_ERROR, "Failed registering server.");
     
    115117        }
    116118
    117         rc = loc_service_register(svc_name, &sid);
     119        rc = loc_service_register(ethip_srv, svc_name, &sid);
    118120        if (rc != EOK) {
    119121                log_msg(LOG_DEFAULT, LVL_ERROR, "Failed registering service %s.", svc_name);
     
    129131        }
    130132
    131         rc = loc_service_add_to_cat(sid, iplink_cat);
     133        rc = loc_service_add_to_cat(ethip_srv, sid, iplink_cat);
    132134        if (rc != EOK) {
    133135                log_msg(LOG_DEFAULT, LVL_ERROR, "Failed adding %s to category.", svc_name);
  • uspace/srv/net/inetsrv/inetsrv.c

    r6a0b2cc r4c6fd56  
    11/*
    2  * Copyright (c) 2012 Jiri Svoboda
     2 * Copyright (c) 2023 Jiri Svoboda
    33 * All rights reserved.
    44 *
     
    8686static errno_t inet_init(void)
    8787{
     88        loc_srv_t *srv;
     89
    8890        log_msg(LOG_DEFAULT, LVL_DEBUG, "inet_init()");
    8991
     
    104106                return rc;
    105107
    106         rc = loc_server_register(NAME);
     108        rc = loc_server_register(NAME, &srv);
    107109        if (rc != EOK) {
    108110                log_msg(LOG_DEFAULT, LVL_ERROR, "Failed registering server: %s.", str_error(rc));
     
    111113
    112114        service_id_t sid;
    113         rc = loc_service_register(SERVICE_NAME_INET, &sid);
    114         if (rc != EOK) {
     115        rc = loc_service_register(srv, SERVICE_NAME_INET, &sid);
     116        if (rc != EOK) {
     117                loc_server_unregister(srv);
    115118                log_msg(LOG_DEFAULT, LVL_ERROR, "Failed registering service: %s.", str_error(rc));
    116119                return EEXIST;
  • uspace/srv/net/loopip/loopip.c

    r6a0b2cc r4c6fd56  
    11/*
    2  * Copyright (c) 2021 Jiri Svoboda
     2 * Copyright (c) 2023 Jiri Svoboda
    33 * All rights reserved.
    44 *
     
    103103static errno_t loopip_init(void)
    104104{
     105        loc_srv_t *srv;
     106
    105107        async_set_fallback_port_handler(loopip_client_conn, NULL);
    106108
    107         errno_t rc = loc_server_register(NAME);
     109        errno_t rc = loc_server_register(NAME, &srv);
    108110        if (rc != EOK) {
    109111                log_msg(LOG_DEFAULT, LVL_ERROR, "Failed registering server.");
     
    119121        const char *svc_name = "net/loopback";
    120122        service_id_t sid;
    121         rc = loc_service_register(svc_name, &sid);
    122         if (rc != EOK) {
     123        rc = loc_service_register(srv, svc_name, &sid);
     124        if (rc != EOK) {
     125                loc_server_unregister(srv);
    123126                log_msg(LOG_DEFAULT, LVL_ERROR, "Failed registering service %s.",
    124127                    svc_name);
     
    129132        rc = loc_category_get_id("iplink", &iplink_cat, IPC_FLAG_BLOCKING);
    130133        if (rc != EOK) {
     134                loc_service_unregister(srv, sid);
     135                loc_server_unregister(srv);
    131136                log_msg(LOG_DEFAULT, LVL_ERROR, "Failed resolving category 'iplink'.");
    132137                return rc;
    133138        }
    134139
    135         rc = loc_service_add_to_cat(sid, iplink_cat);
    136         if (rc != EOK) {
     140        rc = loc_service_add_to_cat(srv, sid, iplink_cat);
     141        if (rc != EOK) {
     142                loc_service_unregister(srv, sid);
     143                loc_server_unregister(srv);
    137144                log_msg(LOG_DEFAULT, LVL_ERROR, "Failed adding %s to category.",
    138145                    svc_name);
     
    141148
    142149        fid_t fid = fibril_create(loopip_recv_fibril, NULL);
    143         if (fid == 0)
    144                 return ENOMEM;
     150        if (fid == 0) {
     151                loc_service_unregister(srv, sid);
     152                loc_server_unregister(srv);
     153                return ENOMEM;
     154        }
    145155
    146156        fibril_add_ready(fid);
  • uspace/srv/net/nconfsrv/nconfsrv.c

    r6a0b2cc r4c6fd56  
    11/*
    2  * Copyright (c) 2013 Jiri Svoboda
     2 * Copyright (c) 2023 Jiri Svoboda
    33 * All rights reserved.
    44 *
     
    5959{
    6060        service_id_t sid;
     61        loc_srv_t *srv;
    6162        errno_t rc;
    6263
     
    7980        async_set_fallback_port_handler(ncs_client_conn, NULL);
    8081
    81         rc = loc_server_register(NAME);
     82        rc = loc_server_register(NAME, &srv);
    8283        if (rc != EOK) {
    8384                log_msg(LOG_DEFAULT, LVL_ERROR, "Failed registering server: %s.", str_error(rc));
     
    8586        }
    8687
    87         rc = loc_service_register(SERVICE_NAME_NETCONF, &sid);
     88        rc = loc_service_register(srv, SERVICE_NAME_NETCONF, &sid);
    8889        if (rc != EOK) {
     90                loc_server_unregister(srv);
    8991                log_msg(LOG_DEFAULT, LVL_ERROR, "Failed registering service: %s.", str_error(rc));
    9092                return EEXIST;
     
    9294
    9395        rc = ncs_link_discovery_start();
    94         if (rc != EOK)
     96        if (rc != EOK) {
     97                loc_service_unregister(srv, sid);
     98                loc_server_unregister(srv);
    9599                return EEXIST;
     100        }
    96101
    97102        return EOK;
  • uspace/srv/net/slip/slip.c

    r6a0b2cc r4c6fd56  
    11/*
    2  * Copyright (c) 2021 Jiri Svoboda
     2 * Copyright (c) 2023 Jiri Svoboda
    33 * Copyright (c) 2013 Jakub Jermar
    44 * All rights reserved.
     
    307307        chardev_t *chardev_out = NULL;
    308308        fid_t fid;
     309        loc_srv_t *srv;
    309310        errno_t rc;
    310311
     
    314315        async_set_fallback_port_handler(slip_client_conn, NULL);
    315316
    316         rc = loc_server_register(NAME);
     317        rc = loc_server_register(NAME, &srv);
    317318        if (rc != EOK) {
    318319                log_msg(LOG_DEFAULT, LVL_ERROR,
     
    323324        rc = loc_service_get_id(svcstr, &svcid, 0);
    324325        if (rc != EOK) {
     326                loc_server_unregister(srv);
    325327                log_msg(LOG_DEFAULT, LVL_ERROR,
    326328                    "Failed getting ID for service %s", svcstr);
     
    330332        rc = loc_category_get_id(CAT_IPLINK, &iplinkcid, 0);
    331333        if (rc != EOK) {
     334                loc_server_unregister(srv);
    332335                log_msg(LOG_DEFAULT, LVL_ERROR,
    333336                    "Failed to get category ID for %s",
     
    342345        sess_out = loc_service_connect(svcid, INTERFACE_DDF, 0);
    343346        if (!sess_out) {
     347                loc_server_unregister(srv);
    344348                log_msg(LOG_DEFAULT, LVL_ERROR,
    345349                    "Failed to connect to service %s (ID=%d)",
     
    350354        rc = chardev_open(sess_out, &chardev_out);
    351355        if (rc != EOK) {
     356                loc_server_unregister(srv);
    352357                log_msg(LOG_DEFAULT, LVL_ERROR,
    353358                    "Failed opening character device.");
     
    373378        }
    374379
    375         rc = loc_service_register(linkstr, &linksid);
     380        rc = loc_service_register(srv, linkstr, &linksid);
    376381        if (rc != EOK) {
    377382                log_msg(LOG_DEFAULT, LVL_ERROR,
     
    381386        }
    382387
    383         rc = loc_service_add_to_cat(linksid, iplinkcid);
    384         if (rc != EOK) {
     388        rc = loc_service_add_to_cat(srv, linksid, iplinkcid);
     389        if (rc != EOK) {
     390                loc_service_unregister(srv, linksid);
    385391                log_msg(LOG_DEFAULT, LVL_ERROR,
    386392                    "Failed to add service %d (%s) to category %d (%s).",
     
    401407
    402408fail:
     409        loc_server_unregister(srv);
    403410        chardev_close(chardev_out);
    404411        if (sess_out)
  • uspace/srv/net/tcp/service.c

    r6a0b2cc r4c6fd56  
    11/*
    2  * Copyright (c) 2015 Jiri Svoboda
     2 * Copyright (c) 2023 Jiri Svoboda
    33 * All rights reserved.
    44 *
     
    12421242        errno_t rc;
    12431243        service_id_t sid;
     1244        loc_srv_t *srv;
    12441245
    12451246        async_set_fallback_port_handler(tcp_client_conn, NULL);
    12461247
    1247         rc = loc_server_register(NAME);
     1248        rc = loc_server_register(NAME, &srv);
    12481249        if (rc != EOK) {
    12491250                log_msg(LOG_DEFAULT, LVL_ERROR, "Failed registering server.");
     
    12511252        }
    12521253
    1253         rc = loc_service_register(SERVICE_NAME_TCP, &sid);
    1254         if (rc != EOK) {
     1254        rc = loc_service_register(srv, SERVICE_NAME_TCP, &sid);
     1255        if (rc != EOK) {
     1256                loc_server_unregister(srv);
    12551257                log_msg(LOG_DEFAULT, LVL_ERROR, "Failed registering service.");
    12561258                return EIO;
  • uspace/srv/net/udp/service.c

    r6a0b2cc r4c6fd56  
    11/*
    2  * Copyright (c) 2015 Jiri Svoboda
     2 * Copyright (c) 2023 Jiri Svoboda
    33 * All rights reserved.
    44 *
     
    647647        errno_t rc;
    648648        service_id_t sid;
     649        loc_srv_t *srv;
    649650
    650651        async_set_fallback_port_handler(udp_client_conn, NULL);
    651652
    652         rc = loc_server_register(NAME);
     653        rc = loc_server_register(NAME, &srv);
    653654        if (rc != EOK) {
    654655                log_msg(LOG_DEFAULT, LVL_ERROR, "Failed registering server.");
     
    656657        }
    657658
    658         rc = loc_service_register(SERVICE_NAME_UDP, &sid);
    659         if (rc != EOK) {
     659        rc = loc_service_register(srv, SERVICE_NAME_UDP, &sid);
     660        if (rc != EOK) {
     661                loc_server_unregister(srv);
    660662                log_msg(LOG_DEFAULT, LVL_ERROR, "Failed registering service.");
    661663                return EIO;
Note: See TracChangeset for help on using the changeset viewer.