1898Skais /*
2898Skais * CDDL HEADER START
3898Skais *
4898Skais * The contents of this file are subject to the terms of the
5*10520SBhargava.Yenduri@Sun.COM * Common Development and Distribution License (the "License").
6*10520SBhargava.Yenduri@Sun.COM * You may not use this file except in compliance with the License.
7898Skais *
8898Skais * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
9898Skais * or http://www.opensolaris.org/os/licensing.
10898Skais * See the License for the specific language governing permissions
11898Skais * and limitations under the License.
12898Skais *
13898Skais * When distributing Covered Code, include this CDDL HEADER in each
14898Skais * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
15898Skais * If applicable, add the following below this CDDL HEADER, with the
16898Skais * fields enclosed by brackets "[]" replaced with your own identifying
17898Skais * information: Portions Copyright [yyyy] [name of copyright owner]
18898Skais *
19898Skais * CDDL HEADER END
20898Skais */
21898Skais /*
22*10520SBhargava.Yenduri@Sun.COM * Copyright 2009 Sun Microsystems, Inc. All rights reserved.
23898Skais * Use is subject to license terms.
24898Skais */
25898Skais
26898Skais #include <netinet/in.h> /* struct sockaddr_in */
27898Skais #include <stdio.h>
28898Skais #include <stdlib.h>
29898Skais #include <sys/types.h>
30898Skais #include <sys/socket.h>
31898Skais #include <libscf.h>
32898Skais #include <inet/kssl/kssl.h>
33898Skais #include "kssladm.h"
34898Skais
35898Skais void
usage_delete(boolean_t do_print)36898Skais usage_delete(boolean_t do_print)
37898Skais {
38898Skais if (do_print)
39898Skais (void) fprintf(stderr, "Usage:\n");
40898Skais (void) fprintf(stderr,
41898Skais "kssladm delete [-v] [<server_address>] <server_port>\n");
42898Skais }
43898Skais
44898Skais int
do_delete(int argc,char * argv[])45898Skais do_delete(int argc, char *argv[])
46898Skais {
47*10520SBhargava.Yenduri@Sun.COM struct sockaddr_in6 server_addr;
48898Skais char c;
49898Skais char *port, *addr;
50898Skais int pcnt;
51898Skais
52898Skais if (argc < 3) {
53898Skais goto err;
54898Skais }
55898Skais
56898Skais argc -= 1;
57898Skais argv += 1;
58898Skais
59898Skais while ((c = getopt(argc, argv, "v")) != -1) {
60898Skais switch (c) {
61898Skais case 'v':
62898Skais verbose = B_TRUE;
63898Skais break;
64898Skais default:
65898Skais goto err;
66898Skais }
67898Skais }
68898Skais
69898Skais pcnt = argc - optind;
70898Skais if (pcnt == 1) {
71898Skais port = argv[optind];
72898Skais addr = NULL;
73898Skais } else if (pcnt == 2) {
74898Skais addr = argv[optind];
75898Skais port = argv[optind + 1];
76898Skais }
77898Skais
78898Skais if (parse_and_set_addr(addr, port, &server_addr) < 0) {
79898Skais goto err;
80898Skais }
81898Skais
82898Skais if (kssl_send_command((char *)&server_addr, KSSL_DELETE_ENTRY) < 0) {
83898Skais perror("Error deleting entry");
84898Skais return (FAILURE);
85898Skais }
86898Skais
87898Skais if (verbose)
88898Skais (void) printf("Successfully loaded cert and key\n");
89898Skais
90898Skais return (SUCCESS);
91898Skais
92898Skais err:
93898Skais usage_delete(B_TRUE);
94898Skais return (SMF_EXIT_ERR_CONFIG);
95898Skais }
96