dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misra * CDDL HEADER START
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misra * The contents of this file are subject to the terms of the
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misra * Common Development and Distribution License (the "License").
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misra * You may not use this file except in compliance with the License.
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misra * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misra * or http://www.opensolaris.org/os/licensing.
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misra * See the License for the specific language governing permissions
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misra * and limitations under the License.
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misra * When distributing Covered Code, include this CDDL HEADER in each
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misra * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misra * If applicable, add the following below this CDDL HEADER, with the
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misra * fields enclosed by brackets "[]" replaced with your own identifying
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misra * information: Portions Copyright [yyyy] [name of copyright owner]
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misra * CDDL HEADER END
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misra * Copyright 2009 Sun Microsystems, Inc. All rights reserved.
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misra * Use is subject to license terms.
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misratypedef struct {
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misra/* ARGSUSED */
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misrarr_lb(in6_addr_t *saddr, in_port_t sport, in6_addr_t *daddr,
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misra in_port_t dport, void *alg_data, ilb_server_t **ret_server)
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misra rr_alg->rr_next = list_next(servers, rr_alg->rr_next);
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misra rr_alg->rr_next = list_next(servers, rr_alg->rr_next);
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misrarr_server_del(ilb_server_t *host, void *alg_data)
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misra for (tmp_server = list_head(servers); tmp_server != NULL;
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misra tmp_server = list_next(servers, tmp_server)) {
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misrarr_server_add(ilb_server_t *host, void *alg_data)
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misra new_server = kmem_alloc(sizeof (rr_server_t), KM_NOSLEEP);
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misra list_insert_head(&rr_alg->rr_servers, new_server);
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misrarr_server_toggle(list_t *servers, ilb_server_t *host, boolean_t value)
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misra for (tmp_server = list_head(servers); tmp_server != NULL;
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misra tmp_server = list_next(servers, tmp_server)) {
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misrarr_server_enable(ilb_server_t *host, void *alg_data)
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misra ret = rr_server_toggle(servers, host, B_TRUE);
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misrarr_server_disable(ilb_server_t *host, void *alg_data)
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misra ret = rr_server_toggle(servers, host, B_FALSE);
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misra/* ARGSUSED */
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misra if ((alg = kmem_alloc(sizeof (ilb_alg_data_t), KM_NOSLEEP)) == NULL)
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misra if ((rr_alg = kmem_alloc(sizeof (rr_t), KM_NOSLEEP)) == NULL) {
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misra alg->ilb_alg_server_enable = rr_server_enable;
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misra alg->ilb_alg_server_disable = rr_server_disable;
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misra mutex_init(&rr_alg->rr_lock, NULL, MUTEX_DEFAULT, NULL);
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misra list_create(&rr_alg->rr_servers, sizeof (rr_server_t),
dbed73cbda2229fd1aa6dc5743993cae7f0a7ee9Sangeeta Misra while ((tmp_server = list_head(servers)) != NULL) {