Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 1b3f4463 authored by Luke Huang's avatar Luke Huang
Browse files

Remove res_init.* and move its functionalities into ResState

Add the constructor for ResState and remove the methods used for
initializing RedState.

Bug: 174825679
Test: atest
Change-Id: Ie3e81572e606a6e6f441c2dd61667e31545a4c87
parent e3fdcc86
Loading
Loading
Loading
Loading
+0 −1
Original line number Original line Diff line number Diff line
@@ -105,7 +105,6 @@ cc_library {
        "res_cache.cpp",
        "res_cache.cpp",
        "res_comp.cpp",
        "res_comp.cpp",
        "res_debug.cpp",
        "res_debug.cpp",
        "res_init.cpp",
        "res_mkquery.cpp",
        "res_mkquery.cpp",
        "res_query.cpp",
        "res_query.cpp",
        "res_send.cpp",
        "res_send.cpp",
+2 −5
Original line number Original line Diff line number Diff line
@@ -62,7 +62,6 @@
#include "netd_resolv/resolv.h"
#include "netd_resolv/resolv.h"
#include "res_comp.h"
#include "res_comp.h"
#include "res_debug.h"
#include "res_debug.h"
#include "res_init.h"
#include "resolv_cache.h"
#include "resolv_cache.h"
#include "resolv_private.h"
#include "resolv_private.h"
#include "util.h"
#include "util.h"
@@ -1436,8 +1435,7 @@ static int dns_getaddrinfo(const char* name, const addrinfo* pai,
            return EAI_FAMILY;
            return EAI_FAMILY;
    }
    }


    ResState res;
    ResState res(netcontext, event);
    res_init(&res, netcontext, event);


    int he;
    int he;
    if (res_searchN(name, &q, &res, &he) < 0) {
    if (res_searchN(name, &q, &res, &he) < 0) {
@@ -1633,7 +1631,6 @@ QueryResult doQuery(const char* name, res_target* t, res_state res,
    NetworkDnsEventReported event;
    NetworkDnsEventReported event;
    if (n <= 0) {
    if (n <= 0) {
        LOG(ERROR) << __func__ << ": res_nmkquery failed";
        LOG(ERROR) << __func__ << ": res_nmkquery failed";
        return {0, -1, NO_RECOVERY, event};
        return {
        return {
                .ancount = 0,
                .ancount = 0,
                .rcode = -1,
                .rcode = -1,
@@ -1642,7 +1639,7 @@ QueryResult doQuery(const char* name, res_target* t, res_state res,
        };
        };
    }
    }


    ResState res_temp = fromResState(*res, &event);
    ResState res_temp = res->clone(&event);


    int rcode = NOERROR;
    int rcode = NOERROR;
    n = res_nsend(&res_temp, buf, n, t->answer.data(), anslen, &rcode, 0, sleepTimeMs);
    n = res_nsend(&res_temp, buf, n, t->answer.data(), anslen, &rcode, 0, sleepTimeMs);
+3 −5
Original line number Original line Diff line number Diff line
@@ -76,8 +76,8 @@
#include "netd_resolv/resolv.h"
#include "netd_resolv/resolv.h"
#include "res_comp.h"
#include "res_comp.h"
#include "res_debug.h"  // p_class(), p_type()
#include "res_debug.h"  // p_class(), p_type()
#include "res_init.h"
#include "resolv_cache.h"
#include "resolv_cache.h"
#include "resolv_private.h"
#include "stats.pb.h"
#include "stats.pb.h"


using android::net::NetworkDnsEventReported;
using android::net::NetworkDnsEventReported;
@@ -393,8 +393,7 @@ int resolv_gethostbyname(const char* name, int af, hostent* hp, char* buf, size_
    }
    }


    getnamaddr info;
    getnamaddr info;
    ResState res;
    ResState res(netcontext, event);
    res_init(&res, netcontext, event);


    size_t size;
    size_t size;
    switch (af) {
    switch (af) {
@@ -730,8 +729,7 @@ static int dns_gethtbyaddr(const unsigned char* uaddr, int len, int af,


    auto buf = std::make_unique<querybuf>();
    auto buf = std::make_unique<querybuf>();


    ResState res;
    ResState res(netcontext, event);
    res_init(&res, netcontext, event);
    int he;
    int he;
    n = res_nquery(&res, qbuf, C_IN, T_PTR, buf->buf, (int)sizeof(buf->buf), &he);
    n = res_nquery(&res, qbuf, C_IN, T_PTR, buf->buf, (int)sizeof(buf->buf), &he);
    if (n < 0) {
    if (n < 0) {

res_init.cpp

deleted100644 → 0
+0 −133
Original line number Original line Diff line number Diff line
/*	$NetBSD: res_init.c,v 1.8 2006/03/19 03:10:08 christos Exp $	*/

/*
 * Copyright (c) 1985, 1989, 1993
 *    The Regents of the University of California.  All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 * 1. Redistributions of source code must retain the above copyright
 *    notice, this list of conditions and the following disclaimer.
 * 2. Redistributions in binary form must reproduce the above copyright
 *    notice, this list of conditions and the following disclaimer in the
 *    documentation and/or other materials provided with the distribution.
 * 3. All advertising materials mentioning features or use of this software
 *    must display the following acknowledgement:
 * 	This product includes software developed by the University of
 * 	California, Berkeley and its contributors.
 * 4. Neither the name of the University nor the names of its contributors
 *    may be used to endorse or promote products derived from this software
 *    without specific prior written permission.
 *
 * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 * SUCH DAMAGE.
 */

/*
 * Portions Copyright (c) 1993 by Digital Equipment Corporation.
 *
 * Permission to use, copy, modify, and distribute this software for any
 * purpose with or without fee is hereby granted, provided that the above
 * copyright notice and this permission notice appear in all copies, and that
 * the name of Digital Equipment Corporation not be used in advertising or
 * publicity pertaining to distribution of the document or software without
 * specific, written prior permission.
 *
 * THE SOFTWARE IS PROVIDED "AS IS" AND DIGITAL EQUIPMENT CORP. DISCLAIMS ALL
 * WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES
 * OF MERCHANTABILITY AND FITNESS.   IN NO EVENT SHALL DIGITAL EQUIPMENT
 * CORPORATION BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
 * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
 * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS
 * ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
 * SOFTWARE.
 */

/*
 * Copyright (c) 2004 by Internet Systems Consortium, Inc. ("ISC")
 * Portions Copyright (c) 1996-1999 by Internet Software Consortium.
 *
 * Permission to use, copy, modify, and distribute this software for any
 * purpose with or without fee is hereby granted, provided that the above
 * copyright notice and this permission notice appear in all copies.
 *
 * THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES
 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
 * MERCHANTABILITY AND FITNESS.  IN NO EVENT SHALL ISC BE LIABLE FOR
 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
 * OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
 */

#define LOG_TAG "resolv"

#include <sys/param.h>
#include <sys/socket.h>
#include <sys/time.h>

#include <arpa/inet.h>
#include <arpa/nameser.h>
#include <netinet/in.h>

#include <android-base/logging.h>
#include <ctype.h>
#include <errno.h>
#include <fcntl.h>
#include <netdb.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>

#include "netd_resolv/resolv.h"
#include "resolv_private.h"
#include "stats.pb.h"

void res_init(ResState* statp, const struct android_net_context* _Nonnull netcontext,
              android::net::NetworkDnsEventReported* _Nonnull event) {
    statp->netid = netcontext->dns_netid;
    statp->uid = netcontext->uid;
    statp->pid = netcontext->pid;
    statp->id = arc4random_uniform(65536);

    for (auto& sock : statp->nssocks) {
        sock.reset();
    }
    statp->ndots = 1;
    statp->_mark = netcontext->dns_mark;
    statp->tcp_nssock.reset();
    statp->event = event;
    statp->netcontext_flags = netcontext->flags;
}

// TODO: Have some proper constructors for ResState instead of this method and res_init().
ResState fromResState(const ResState& other, android::net::NetworkDnsEventReported* event) {
    ResState resOutput;
    resOutput.netid = other.netid;
    resOutput.uid = other.uid;
    resOutput.pid = other.pid;
    resOutput.id = other.id;

    resOutput.nsaddrs = other.nsaddrs;

    for (auto& sock : resOutput.nssocks) {
        sock.reset();
    }

    resOutput.ndots = other.ndots;
    resOutput._mark = other._mark;
    resOutput.tcp_nssock.reset();
    resOutput.event = event;
    resOutput.netcontext_flags = other.netcontext_flags;
    return resOutput;
}

res_init.h

deleted100644 → 0
+0 −24
Original line number Original line Diff line number Diff line
/*
 * Copyright (C) 2019 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
#pragma once

#include "resolv_private.h"
#include "stats.pb.h"

// TODO: make this a constructor for ResState
void res_init(ResState* res, const struct android_net_context* netcontext,
              android::net::NetworkDnsEventReported* event);
ResState fromResState(const ResState& other, android::net::NetworkDnsEventReported* event);
Loading