wks_11.c revision 63cef8bde8b92aeb30ccdcf21d4e44c9be9cc6e3
7d32c065c7bb56f281651ae3dd2888f32ce4f1d9Bob Halley * Copyright (C) 1999, 2000 Internet Software Consortium.
44a966dff66061ac3f266c6b451a70733eb78e82Mark Andrews * Permission to use, copy, modify, and distribute this software for any
44a966dff66061ac3f266c6b451a70733eb78e82Mark Andrews * purpose with or without fee is hereby granted, provided that the above
44a966dff66061ac3f266c6b451a70733eb78e82Mark Andrews * copyright notice and this permission notice appear in all copies.
15a44745412679c30a6d022733925af70a38b715David Lawrence * THE SOFTWARE IS PROVIDED "AS IS" AND INTERNET SOFTWARE CONSORTIUM
15a44745412679c30a6d022733925af70a38b715David Lawrence * DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL
15a44745412679c30a6d022733925af70a38b715David Lawrence * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL
15a44745412679c30a6d022733925af70a38b715David Lawrence * INTERNET SOFTWARE CONSORTIUM BE LIABLE FOR ANY SPECIAL, DIRECT,
15a44745412679c30a6d022733925af70a38b715David Lawrence * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING
15a44745412679c30a6d022733925af70a38b715David Lawrence * FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
15a44745412679c30a6d022733925af70a38b715David Lawrence * NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
15a44745412679c30a6d022733925af70a38b715David Lawrence * WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
63cef8bde8b92aeb30ccdcf21d4e44c9be9cc6e3Andreas Gustafsson/* $Id: wks_11.c,v 1.38 2000/12/01 01:40:59 gson Exp $ */
f31f0b63cbe841720f154c570bcdede9d79e64b8Michael Graff/* Reviewed: Fri Mar 17 15:01:49 PST 2000 by explorer */
44a966dff66061ac3f266c6b451a70733eb78e82Mark Andrews unsigned int n;
34b394b43e2207e8f8f3703f0402422121455638David Lawrence * IPv4 dotted quad.
add4043305ca411202ed9cf1929a4179016515ceBrian Wellington RETERR(isc_lex_getmastertoken(lexer, &token, isc_tokentype_string,
8360c3dc0f8ab25f4839c79e30d6865838d9a4daBob Halley if (inet_aton(token.value.as_pointer, &addr) != 1)
add4043305ca411202ed9cf1929a4179016515ceBrian Wellington RETERR(isc_lex_getmastertoken(lexer, &token, isc_tokentype_string,
44a966dff66061ac3f266c6b451a70733eb78e82Mark Andrews proto = strtol(token.value.as_pointer, &e, 10);
5d15501996f597d9bbb734d88d4549828e28000bMark Andrews if (*e == 0)
44a966dff66061ac3f266c6b451a70733eb78e82Mark Andrews else if ((pe = getprotobyname(token.value.as_pointer)) != NULL)
add4043305ca411202ed9cf1929a4179016515ceBrian Wellington RETERR(isc_lex_getmastertoken(lexer, &token,
251705f6831d3d1357627ba2d54fc898487dec09Mark Andrews * Lowercase the service string as some getservbyname() are
251705f6831d3d1357627ba2d54fc898487dec09Mark Andrews * case sensitive and the database is usually in lowercase.
251705f6831d3d1357627ba2d54fc898487dec09Mark Andrews strncpy(service, token.value.as_pointer, sizeof(service));
5d15501996f597d9bbb734d88d4549828e28000bMark Andrews if (*e == 0)
251705f6831d3d1357627ba2d54fc898487dec09Mark Andrews else if ((se = getservbyname(service, ps)) != NULL)
44a966dff66061ac3f266c6b451a70733eb78e82Mark Andrews else if ((se = getservbyname(token.value.as_pointer, ps))
19c5c23ef6e38965949c996592bd92478da0612cMark Andrews } while (1);
34b394b43e2207e8f8f3703f0402422121455638David Lawrence * Let upper layer handle eol/eof.
44a966dff66061ac3f266c6b451a70733eb78e82Mark Andrews unsigned short proto;
44a966dff66061ac3f266c6b451a70733eb78e82Mark Andrews unsigned int i, j;
8360c3dc0f8ab25f4839c79e30d6865838d9a4daBob Halley if (inet_ntop(AF_INET, sr.base, (char *)tr.base, tr.length) == NULL)
f31f0b63cbe841720f154c570bcdede9d79e64b8Michael Graff for (j = 0 ; j < 8 ; j++)
44a966dff66061ac3f266c6b451a70733eb78e82Mark Andrews return (mem_tobuffer(target, sr.base, sr.length));
4529cdaedaf1a0a5f8ff89aeca510b7a4475446cBob Halleystatic inline int
373ce67419680a398ba3dc51a14a486caaf0afb0Mark Andrews RETERR(uint16_tobuffer(wks->protocol, target));
373ce67419680a398ba3dc51a14a486caaf0afb0Mark Andrews return (mem_tobuffer(target, wks->map, wks->map_len));
5159c427839689d5070e2f9c6c9a0168dd9f6583Mark Andrews wks->map = mem_maybedup(mctx, region.base, region.length);
4529cdaedaf1a0a5f8ff89aeca510b7a4475446cBob Halleystatic inline void
854d0238dbc2908490197984b3b9d558008a53dfMark Andrews#endif /* RDATA_IN_1_WKS_11_C */