summaryrefslogtreecommitdiffstats
path: root/src/vppinfra/random_isaac.h
blob: 803fbd621e2b34d497a0c15dbbfb57933bb8125a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
/*
 * Copyright (c) 2015 Cisco and/or its affiliates.
 * 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.
 */
/*
  ------------------------------------------------------------------------------
  By Bob Jenkins, 1996, Public Domain
  MODIFIED:
  960327: Creation (addition of randinit, really)
  970719: use context, not global variables, for internal state
  980324: renamed seed to flag
  980605: recommend ISAAC_LOG2_SIZE=4 for noncryptography.
  010626: note this is public domain
  ------------------------------------------------------------------------------

  Modified for CLIB by Eliot Dresselhaus.
  Dear Bob, Thanks for all the great work. - Eliot

  modifications copyright (c) 2003 Eliot Dresselhaus

  Permission is hereby granted, free of charge, to any person obtaining
  a copy of this software and associated documentation files (the
  "Software"), to deal in the Software without restriction, including
  without limitation the rights to use, copy, modify, merge, publish,
  distribute, sublicense, and/or sell copies of the Software, and to
  permit persons to whom the Software is furnished to do so, subject to
  the following conditions:

  The above copyright notice and this permission notice shall be
  included in all copies or substantial portions of the Software.

  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
  NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
  LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
  OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
  WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/

#ifndef included_random_isaac_h
#define included_random_isaac_h

#include <vppinfra/clib.h>	/* for u32/u64 */
#include <vppinfra/format.h>	/* for unformat_input_t */

/* Bob recommends 8 for crypto, 4 for simulations */
#define ISAAC_LOG2_SIZE   (4)
#define ISAAC_SIZE (1 << ISAAC_LOG2_SIZE)

typedef struct
{
  uword memory[ISAAC_SIZE];
  uword a, b, c;
} isaac_t;

void isaac (isaac_t * ctx, uword * results);
void isaac2 (isaac_t * ctx, uword * results);
void isaac_init (isaac_t * ctx, uword * results);

int test_isaac_main (unformat_input_t * input);

#endif /* included_random_isaac_h */

/*
 * fd.io coding-style-patch-verification: ON
 *
 * Local Variables:
 * eval: (c-set-style "gnu")
 * End:
 */
\ _(SYSCALL_ERROR_5, -15, "System call error #5") \ _(SYSCALL_ERROR_6, -16, "System call error #6") \ _(SYSCALL_ERROR_7, -17, "System call error #7") \ _(SYSCALL_ERROR_8, -18, "System call error #8") \ _(SYSCALL_ERROR_9, -19, "System call error #9") \ _(SYSCALL_ERROR_10, -20, "System call error #10") \ _(FEATURE_DISABLED, -30, "Feature disabled by configuration") \ _(INVALID_REGISTRATION, -31, "Invalid registration") \ _(NEXT_HOP_NOT_IN_FIB, -50, "Next hop not in FIB") \ _(UNKNOWN_DESTINATION, -51, "Unknown destination") \ _(NO_PATHS_IN_ROUTE, -52, "No paths specified in route") \ _(NEXT_HOP_NOT_FOUND_MP, -53, "Next hop not found (multipath)") \ _(NO_MATCHING_INTERFACE, -54, "No matching interface for probe") \ _(INVALID_VLAN, -55, "Invalid VLAN") \ _(VLAN_ALREADY_EXISTS, -56, "VLAN subif already exists") \ _(INVALID_SRC_ADDRESS, -57, "Invalid src address") \ _(INVALID_DST_ADDRESS, -58, "Invalid dst address") \ _(ADDRESS_LENGTH_MISMATCH, -59, "Address length mismatch") \ _(ADDRESS_NOT_FOUND_FOR_INTERFACE, -60, "Address not found for interface") \ _(ADDRESS_NOT_DELETABLE, -61, "Address not deletable") \ _(IP6_NOT_ENABLED, -62, "ip6 not enabled") \ _(NO_SUCH_NODE, -63, "No such graph node") \ _(NO_SUCH_NODE2, -64, "No such graph node #2") \ _(NO_SUCH_TABLE, -65, "No such table") \ _(NO_SUCH_TABLE2, -66, "No such table #2") \ _(NO_SUCH_TABLE3, -67, "No such table #3") \ _(SUBIF_ALREADY_EXISTS, -68, "Subinterface already exists") \ _(SUBIF_CREATE_FAILED, -69, "Subinterface creation failed") \ _(INVALID_MEMORY_SIZE, -70, "Invalid memory size requested") \ _(INVALID_INTERFACE, -71, "Invalid interface") \ _(INVALID_VLAN_TAG_COUNT, -72, "Invalid number of tags for requested operation") \ _(INVALID_ARGUMENT, -73, "Invalid argument") \ _(UNEXPECTED_INTF_STATE, -74, "Unexpected interface state") \ _(TUNNEL_EXIST, -75, "Tunnel already exists") \ _(INVALID_DECAP_NEXT, -76, "Invalid decap-next") \ _(RESPONSE_NOT_READY, -77, "Response not ready") \ _(NOT_CONNECTED, -78, "Not connected to the data plane") \ _(IF_ALREADY_EXISTS, -79, "Interface already exists") \ _(BOND_SLAVE_NOT_ALLOWED, -80, "Operation not allowed on slave of BondEthernet") \ _(VALUE_EXIST, -81, "Value already exists") \ _(SAME_SRC_DST, -82, "Source and destination are the same") \ _(IP6_MULTICAST_ADDRESS_NOT_PRESENT, -83, "IP6 multicast address required") \ _(SR_POLICY_NAME_NOT_PRESENT, -84, "Segment routing policy name required") \ _(NOT_RUNNING_AS_ROOT, -85, "Not running as root") \ _(ALREADY_CONNECTED, -86, "Connection to the data plane already exists") \ _(UNSUPPORTED_JNI_VERSION, -87, "Unsupported JNI version") \ _(IP_PREFIX_INVALID, -88, "IP prefix invalid (masked bits set in address") \ _(INVALID_WORKER, -89, "Invalid worker thread") \ _(LISP_DISABLED, -90, "LISP is disabled") \ _(CLASSIFY_TABLE_NOT_FOUND, -91, "Classify table not found") \ _(INVALID_EID_TYPE, -92, "Unsupported LISP EID type") \ _(CANNOT_CREATE_PCAP_FILE, -93, "Cannot create pcap file") \ _(INCORRECT_ADJACENCY_TYPE, -94, "Invalid adjacency type for this operation") \ _(EXCEEDED_NUMBER_OF_RANGES_CAPACITY, -95, "Operation would exceed configured capacity of ranges") \ _(EXCEEDED_NUMBER_OF_PORTS_CAPACITY, -96, "Operation would exceed capacity of number of ports") \ _(INVALID_ADDRESS_FAMILY, -97, "Invalid address family") \ _(INVALID_SUB_SW_IF_INDEX, -98, "Invalid sub-interface sw_if_index") \ _(TABLE_TOO_BIG, -99, "Table too big") \ _(CANNOT_ENABLE_DISABLE_FEATURE, -100, "Cannot enable/disable feature") \ _(BFD_EEXIST, -101, "Duplicate BFD object") \ _(BFD_ENOENT, -102, "No such BFD object") \ _(BFD_EINUSE, -103, "BFD object in use") \ _(BFD_NOTSUPP, -104, "BFD feature not supported") \ _(ADDRESS_IN_USE, -105, "Address in use") \ _(ADDRESS_NOT_IN_USE, -106, "Address not in use") \ _(QUEUE_FULL, -107, "Queue full") \ _(APP_UNSUPPORTED_CFG, -108, "Unsupported application config") \ _(URI_FIFO_CREATE_FAILED, -109, "URI FIFO segment create failed") \ _(LISP_RLOC_LOCAL, -110, "RLOC address is local") \ _(BFD_EAGAIN, -111, "BFD object cannot be manipulated at this time") \ _(INVALID_GPE_MODE, -112, "Invalid GPE mode") \ _(LISP_GPE_ENTRIES_PRESENT, -113, "LISP GPE entries are present") \ _(ADDRESS_FOUND_FOR_INTERFACE, -114, "Address found for interface") \ _(SESSION_CONNECT, -115, "Session failed to connect") \ _(ENTRY_ALREADY_EXISTS, -116, "Entry already exists") \ _(SVM_SEGMENT_CREATE_FAIL, -117, "Svm segment create fail") \ _(APPLICATION_NOT_ATTACHED, -118, "Application not attached") \ _(BD_ALREADY_EXISTS, -119, "Bridge domain already exists") \ _(BD_IN_USE, -120, "Bridge domain has member interfaces") \ _(BD_NOT_MODIFIABLE, -121, "Bridge domain 0 can't be deleted/modified") \ _(BD_ID_EXCEED_MAX, -122, "Bridge domain ID exceeds 16M limit") \ _(SUBIF_DOESNT_EXIST, -123, "Subinterface doesn't exist") \ _(L2_MACS_EVENT_CLINET_PRESENT, -124, "Client already exist for L2 MACs events") \ _(INVALID_QUEUE, -125, "Invalid queue") \ _(UNSUPPORTED, -126, "Unsupported") \ _(DUPLICATE_IF_ADDRESS, -127, "Address already present on another interface") \ _(APP_INVALID_NS, -128, "Invalid application namespace") \ _(APP_WRONG_NS_SECRET, -129, "Wrong app namespace secret") \ _(APP_CONNECT_SCOPE, -130, "Connect scope") \ _(APP_ALREADY_ATTACHED, -131, "App already attached") \ _(SESSION_REDIRECT, -132, "Redirect failed") \ _(ILLEGAL_NAME, -133, "Illegal name") \ _(NO_NAME_SERVERS, -134, "No name servers configured") \ _(NAME_SERVER_NOT_FOUND, -135, "Name server not found") \ _(NAME_RESOLUTION_NOT_ENABLED, -136, "Name resolution not enabled") \ _(NAME_SERVER_FORMAT_ERROR, -137, "Server format error (bug!)") \ _(NAME_SERVER_NO_SUCH_NAME, -138, "No such name") \ _(NAME_SERVER_NO_ADDRESSES, -139, "No addresses available") \ _(NAME_SERVER_NEXT_SERVER, -140, "Retry with new server") \ _(APP_CONNECT_FILTERED, -141, "Connect was filtered") \ _(ACL_IN_USE_INBOUND, -142, "Inbound ACL in use") \ _(ACL_IN_USE_OUTBOUND, -143, "Outbound ACL in use") \ _(INIT_FAILED, -144, "Initialization Failed") \ _(NETLINK_ERROR, -145, "Netlink error") \ _(BIER_BSL_UNSUP, -146, "BIER bit-string-length unsupported") \ _(INSTANCE_IN_USE, -147, "Instance in use") \ _(INVALID_SESSION_ID, -148, "Session ID out of range") \ _(ACL_IN_USE_BY_LOOKUP_CONTEXT, -149, "ACL in use by a lookup context") \ _(INVALID_VALUE_3, -150, "Invalid value #3") \ _(NON_ETHERNET, -151, "Interface is not an Ethernet interface") \ _(BD_ALREADY_HAS_BVI, -152, "Bridge domain already has a BVI interface") \ _(INVALID_PROTOCOL, -153, "Invalid Protocol") \ _(INVALID_ALGORITHM, -154, "Invalid Algorithm") \ _(RSRC_IN_USE, -155, "Resource In Use") \ _(KEY_LENGTH, -156, "invalid Key Length") \ _(FIB_PATH_UNSUPPORTED_NH_PROTO, -157, "Unsupported FIB Path protocol") \ _(API_ENDIAN_FAILED, -159, "Endian mismatch detected") \ _(NO_CHANGE, -160, "No change in table") \ _(MISSING_CERT_KEY, -161, "Missing certifcate or key") \ _(LIMIT_EXCEEDED, -162, "limit exceeded") \ _(IKE_NO_PORT, -163, "port not managed by IKE") \ _(UDP_PORT_TAKEN, -164, "UDP port already taken") \ typedef enum { #define _(a,b,c) VNET_API_ERROR_##a = (b), foreach_vnet_api_error #undef _ VNET_API_N_ERROR, } vnet_api_error_t; /* *INDENT-OFF* */ static inline u8 * format_vnet_api_errno (u8 * s, va_list * args) { vnet_api_error_t api_error = va_arg (*args, vnet_api_error_t); #ifdef _ #undef _ #endif #define _(a, b, c) \ case b: \ s = format (s, "%s", c); \ break; switch (api_error) { foreach_vnet_api_error default: s = format (s, "UNKNOWN"); break; } return s; #undef _ } /* *INDENT-ON* */ #endif /* included_vnet_api_errno_h */ /* * fd.io coding-style-patch-verification: ON * * Local Variables: * eval: (c-set-style "gnu") * End: */