Changeset 58e8646 in mainline for uspace/srv/net/udp/service.c


Ignore:
Timestamp:
2017-08-23T18:37:21Z (7 years ago)
Author:
Jiri Svoboda <jiri@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
258d77e
Parents:
853802e
Message:

Fix DNS resolution not working due to missing local address.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/srv/net/udp/service.c

    r853802e r58e8646  
    270270}
    271271
     272/** Set association sending messages with no local address.
     273 *
     274 * Handle client request to set nolocal flag (with parameters unmarshalled).
     275 *
     276 * @param client   UDP client
     277 * @param assoc_id Association ID
     278 * @return EOK on success, ENOENT if no such association is found
     279 */
     280static int udp_assoc_set_nolocal_impl(udp_client_t *client, sysarg_t assoc_id)
     281{
     282        udp_cassoc_t *cassoc;
     283        int rc;
     284
     285        rc = udp_cassoc_get(client, assoc_id, &cassoc);
     286        if (rc != EOK) {
     287                assert(rc == ENOENT);
     288                return ENOENT;
     289        }
     290
     291        log_msg(LOG_DEFAULT, LVL_NOTE, "Setting nolocal to true");
     292        cassoc->assoc->nolocal = true;
     293        return EOK;
     294}
     295
    272296/** Send message via association.
    273297 *
     
    391415        assoc_id = IPC_GET_ARG1(*icall);
    392416        rc = udp_assoc_destroy_impl(client, assoc_id);
     417        async_answer_0(iid, rc);
     418}
     419
     420/** Set association with no local address.
     421 *
     422 * Handle client request to set no local address flag.
     423 *
     424 * @param client   UDP client
     425 * @param iid      Async request ID
     426 * @param icall    Async request data
     427 */
     428static void udp_assoc_set_nolocal_srv(udp_client_t *client, ipc_callid_t iid,
     429    ipc_call_t *icall)
     430{
     431        sysarg_t assoc_id;
     432        int rc;
     433
     434        log_msg(LOG_DEFAULT, LVL_NOTE, "udp_assoc_set_nolocal_srv()");
     435
     436        assoc_id = IPC_GET_ARG1(*icall);
     437        rc = udp_assoc_set_nolocal_impl(client, assoc_id);
    393438        async_answer_0(iid, rc);
    394439}
     
    662707                        udp_assoc_destroy_srv(&client, callid, &call);
    663708                        break;
     709                case UDP_ASSOC_SET_NOLOCAL:
     710                        udp_assoc_set_nolocal_srv(&client, callid, &call);
     711                        break;
    664712                case UDP_ASSOC_SEND_MSG:
    665713                        udp_assoc_send_msg_srv(&client, callid, &call);
Note: See TracChangeset for help on using the changeset viewer.