blob: 625bf8ed182e3ccc688b05788537c01e6e19fc71 [file]
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you 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.
*/
#include <fstream>
#include <cstdlib>
#include <arpa/inet.h>
#include <ts/ts.h>
namespace
{
#define PINAME "test_TSHttpTxnVerifiedAddr"
char PIName[] = PINAME;
DbgCtl dbg_ctl{PIName};
void
handle_txn_start(TSHttpTxn txn)
{
struct sockaddr_in addr = {};
addr.sin_family = AF_INET;
addr.sin_port = 0;
addr.sin_addr = {.s_addr = 0x01010101}; // 1.1.1.1
TSHttpTxnVerifiedAddrSet(txn, reinterpret_cast<struct sockaddr *>(&addr));
TSHttpTxnReenable(txn, TS_EVENT_HTTP_CONTINUE);
}
int
globalContFunc(TSCont, TSEvent event, void *eventData)
{
Dbg(dbg_ctl, "Global: event=%s(%d) eventData=%p", TSHttpEventNameLookup(event), event, eventData);
switch (event) {
case TS_EVENT_HTTP_TXN_START:
handle_txn_start(static_cast<TSHttpTxn>(eventData));
break;
default:
break;
} // end switch
return 0;
}
TSCont gCont;
} // end anonymous namespace
void
TSPluginInit(int /* argc ATS_UNUSED */, const char ** /* argv ATS_UNUSED */)
{
TSPluginRegistrationInfo info;
info.plugin_name = PIName;
info.vendor_name = "Apache Software Foundation";
info.support_email = "dev@trafficserver.apache.org";
if (TSPluginRegister(&info) != TS_SUCCESS) {
TSError(PINAME ": Plugin registration failed");
return;
}
TSMutex mtx = TSMutexCreate();
gCont = TSContCreate(globalContFunc, mtx);
TSHttpHookAdd(TS_HTTP_TXN_START_HOOK, gCont);
}