michael@0: /* michael@0: * Copyright (C) 2008 The Android Open Source Project michael@0: * All rights reserved. michael@0: * michael@0: * Redistribution and use in source and binary forms, with or without michael@0: * modification, are permitted provided that the following conditions michael@0: * are met: michael@0: * * Redistributions of source code must retain the above copyright michael@0: * notice, this list of conditions and the following disclaimer. michael@0: * * Redistributions in binary form must reproduce the above copyright michael@0: * notice, this list of conditions and the following disclaimer in michael@0: * the documentation and/or other materials provided with the michael@0: * distribution. michael@0: * michael@0: * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS michael@0: * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT michael@0: * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS michael@0: * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE michael@0: * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, michael@0: * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, michael@0: * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS michael@0: * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED michael@0: * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, michael@0: * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT michael@0: * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF michael@0: * SUCH DAMAGE. michael@0: */ michael@0: michael@0: /* michael@0: * This version of this file is derived from Android 2.3 "Gingerbread", michael@0: * which contains uncredited changes by Android/Google developers. It has michael@0: * been modified in 2011 for use in the Android build of Mozilla Firefox by michael@0: * Mozilla contributors (including Michael Edwards , michael@0: * and Steve Workman ). michael@0: * These changes are offered under the same license as the original NetBSD michael@0: * file, whose copyright and license are unchanged above. michael@0: */ michael@0: michael@0: #ifndef _RESOLV_CACHE_H_ michael@0: #define _RESOLV_CACHE_H_ michael@0: michael@0: struct resolv_cache; /* forward */ michael@0: michael@0: /* get cache instance, can be NULL if cache is disabled michael@0: * (e.g. through an environment variable) */ michael@0: extern struct resolv_cache* __get_res_cache(void); michael@0: michael@0: /* this gets called everytime we detect some changes in the DNS configuration michael@0: * and will flush the cache */ michael@0: extern void _resolv_cache_reset( unsigned generation ); michael@0: michael@0: typedef enum { michael@0: RESOLV_CACHE_UNSUPPORTED, /* the cache can't handle that kind of queries */ michael@0: /* or the answer buffer is too small */ michael@0: RESOLV_CACHE_NOTFOUND, /* the cache doesn't know about this query */ michael@0: RESOLV_CACHE_FOUND /* the cache found the answer */ michael@0: } ResolvCacheStatus; michael@0: michael@0: extern ResolvCacheStatus michael@0: _resolv_cache_lookup( struct resolv_cache* cache, michael@0: const void* query, michael@0: int querylen, michael@0: void* answer, michael@0: int answersize, michael@0: int *answerlen ); michael@0: michael@0: /* add a (query,answer) to the cache, only call if _resolv_cache_lookup michael@0: * did return RESOLV_CACHE_NOTFOUND michael@0: */ michael@0: extern void michael@0: _resolv_cache_add( struct resolv_cache* cache, michael@0: const void* query, michael@0: int querylen, michael@0: const void* answer, michael@0: int answerlen ); michael@0: michael@0: #endif /* _RESOLV_CACHE_H_ */